Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quellcode-Bibliothek matrix_diag.prf

  Sprache: Lisp
 

(matrix_diag
 (diagonalize_TCC1 0
  (diagonalize_TCC1-1 nil 3615559416
   ("" (skeep)
    (("" (typepred "i")
      (("" (expand "d_point2")
        (("" (flatten) (("" (assertnil nil)) nil)) nil))
      nil))
    nil)
   ((d_point1 const-decl "bool" matrix_diag nil)
    (upper_triangular? const-decl "bool" matrix_det nil)
    (SquareMatrix type-eq-decl nil matrices nil)
    (posnat nonempty-type-eq-decl nil integers nil)
    (nonneg_int nonempty-type-eq-decl nil integers nil)
    (d_point2 const-decl "bool" matrix_diag nil)
    (Square type-eq-decl nil matrices nil)
    (PosFullMatrix type-eq-decl nil matrices nil)
    (columns def-decl "{c: nat |
         (FORALL (i: below(length(M))): length(nth(M, i)) <= c) AND
          (null?(M) AND c = 0 OR
            (EXISTS (i: below(length(M))): length(nth(M, i)) = c))}"
             matrices nil)
    (<= const-decl "bool" reals nil)
    (rows const-decl "nat" matrices nil)
    (> const-decl "bool" reals nil)
    (FullMatrix type-eq-decl nil matrices nil)
    (nth def-decl "T" list_props nil)
    (below type-eq-decl nil nat_types nil)
    (= const-decl "[T, T -> boolean]" equalities nil)
    (below type-eq-decl nil naturalnumbers nil)
    (length def-decl "nat" list_props nil)
    (< const-decl "bool" reals nil)
    (nat nonempty-type-eq-decl nil naturalnumbers nil)
    (>= const-decl "bool" reals nil)
    (int nonempty-type-eq-decl nil integers nil)
    (integer_pred const-decl "[rational -> boolean]" integers nil)
    (rational nonempty-type-from-decl nil rationals nil)
    (rational_pred const-decl "[real -> boolean]" rationals nil)
    (null? adt-recognizer-decl "[list -> boolean]" list_adt nil)
    (real nonempty-type-from-decl nil reals nil)
    (OR const-decl "[bool, bool -> bool]" booleans nil)
    (Matrix type-eq-decl nil matrices nil)
    (real_pred const-decl "[number_field -> boolean]" reals nil)
    (number_field nonempty-type-from-decl nil number_fields nil)
    (number_field_pred const-decl "[number -> boolean]" number_fields
     nil)
    (AND const-decl "[bool, bool -> bool]" booleans nil)
    (every adt-def-decl "boolean" list_adt nil)
    (PRED type-eq-decl nil defined_types nil)
    (list type-decl nil list_adt nil)
    (number nonempty-type-decl nil numbers nil)
    (NOT const-decl "[bool -> bool]" booleans nil)
    (bool nonempty-type-eq-decl nil booleans nil)
    (boolean nonempty-type-decl nil booleans nil)
    (real_lt_is_strict_total_order name-judgement
     "(strict_total_order?[real])" real_props nil)
    (real_le_is_total_order name-judgement "(total_order?[real])"
     real_props nil)
    (real_ge_is_total_order name-judgement "(total_order?[real])"
     real_props nil)
    (int_minus_int_is_int application-judgement "int" integers nil))
   nil))
 (diagonalize_TCC2 0
  (diagonalize_TCC2-1 nil 3615559416
   ("" (skeep)
    (("" (typepred "z`8")
      (("" (expand "d_point2")
        (("" (flatten) (("" (assertnil nil)) nil)) nil))
      nil))
    nil)
   ((d_point1 const-decl "bool" matrix_diag nil)
    (Id const-decl "{M: SquareMatrix(pm) |
         (FORALL (i, j):
            entry(M)(i, j) = IF i < pm AND i = j THEN 1 ELSE 0 ENDIF)
          AND
          (FORALL (pn: posnat, N: MatrixMN(pm, pn)): M * N = N) AND
           (FORALL (pn: posnat, N: MatrixMN(pn, pm)): N * M = N)}"
     matrices nil)
    (IF const-decl "[boolean, T, T -> T]" if_def nil)
    (* const-decl "{A: MatrixMN(rows(M), columns(N)) |
         FORALL (i, j): entry(A)(i, j) = row(M)(i) * col(N)(j)}"
       matrices nil)
    (col def-decl "VectorN(rows(M))" matrices nil)
    (VectorN type-eq-decl nil matrices nil)
    (row const-decl "Vector" matrices nil)
    (* const-decl "real" matrices nil)
    (Vector type-eq-decl nil matrices nil)
    (entry const-decl "real" matrices nil)
    (MatrixMN type-eq-decl nil matrices nil)
    (IMPLIES const-decl "[bool, bool -> bool]" booleans nil)
    (FALSE const-decl "bool" booleans nil)
    (is_simple_prod? const-decl "bool" matrix_det nil)
    (upper_triangular? const-decl "bool" matrix_det nil)
    (SquareMatrix type-eq-decl nil matrices nil)
    (posnat nonempty-type-eq-decl nil integers nil)
    (nonneg_int nonempty-type-eq-decl nil integers nil)
    (d_point2 const-decl "bool" matrix_diag nil)
    (Square type-eq-decl nil matrices nil)
    (PosFullMatrix type-eq-decl nil matrices nil)
    (columns def-decl "{c: nat |
         (FORALL (i: below(length(M))): length(nth(M, i)) <= c) AND
          (null?(M) AND c = 0 OR
            (EXISTS (i: below(length(M))): length(nth(M, i)) = c))}"
             matrices nil)
    (<= const-decl "bool" reals nil)
    (rows const-decl "nat" matrices nil)
    (> const-decl "bool" reals nil)
    (FullMatrix type-eq-decl nil matrices nil)
    (nth def-decl "T" list_props nil)
    (below type-eq-decl nil nat_types nil)
    (= const-decl "[T, T -> boolean]" equalities nil)
    (below type-eq-decl nil naturalnumbers nil)
    (length def-decl "nat" list_props nil)
    (< const-decl "bool" reals nil)
    (nat nonempty-type-eq-decl nil naturalnumbers nil)
    (>= const-decl "bool" reals nil)
    (int nonempty-type-eq-decl nil integers nil)
    (integer_pred const-decl "[rational -> boolean]" integers nil)
    (rational nonempty-type-from-decl nil rationals nil)
    (rational_pred const-decl "[real -> boolean]" rationals nil)
    (null? adt-recognizer-decl "[list -> boolean]" list_adt nil)
    (real nonempty-type-from-decl nil reals nil)
    (OR const-decl "[bool, bool -> bool]" booleans nil)
    (Matrix type-eq-decl nil matrices nil)
    (real_pred const-decl "[number_field -> boolean]" reals nil)
    (number_field nonempty-type-from-decl nil number_fields nil)
    (number_field_pred const-decl "[number -> boolean]" number_fields
     nil)
    (AND const-decl "[bool, bool -> bool]" booleans nil)
    (every adt-def-decl "boolean" list_adt nil)
    (PRED type-eq-decl nil defined_types nil)
    (list type-decl nil list_adt nil)
    (number nonempty-type-decl nil numbers nil)
    (NOT const-decl "[bool -> bool]" booleans nil)
    (bool nonempty-type-eq-decl nil booleans nil)
    (boolean nonempty-type-decl nil booleans nil)
    (real_lt_is_strict_total_order name-judgement
     "(strict_total_order?[real])" real_props nil)
    (real_le_is_total_order name-judgement "(total_order?[real])"
     real_props nil)
    (real_ge_is_total_order name-judgement "(total_order?[real])"
     real_props nil)
    (int_minus_int_is_int application-judgement "int" integers nil))
   nil))
 (diagonalize_TCC3 0
  (diagonalize_TCC3-1 nil 3615559416
   ("" (skeep)
    (("" (typepred "i")
      (("" (expand "d_point2") (("" (ground) nil nil)) nil)) nil))
    nil)
   ((d_point1 const-decl "bool" matrix_diag nil)
    (upper_triangular? const-decl "bool" matrix_det nil)
    (SquareMatrix type-eq-decl nil matrices nil)
    (posnat nonempty-type-eq-decl nil integers nil)
    (nonneg_int nonempty-type-eq-decl nil integers nil)
    (d_point2 const-decl "bool" matrix_diag nil)
    (Square type-eq-decl nil matrices nil)
    (PosFullMatrix type-eq-decl nil matrices nil)
    (columns def-decl "{c: nat |
         (FORALL (i: below(length(M))): length(nth(M, i)) <= c) AND
          (null?(M) AND c = 0 OR
            (EXISTS (i: below(length(M))): length(nth(M, i)) = c))}"
             matrices nil)
    (<= const-decl "bool" reals nil)
    (rows const-decl "nat" matrices nil)
    (> const-decl "bool" reals nil)
    (FullMatrix type-eq-decl nil matrices nil)
    (nth def-decl "T" list_props nil)
    (below type-eq-decl nil nat_types nil)
    (= const-decl "[T, T -> boolean]" equalities nil)
    (below type-eq-decl nil naturalnumbers nil)
    (length def-decl "nat" list_props nil)
    (< const-decl "bool" reals nil)
    (nat nonempty-type-eq-decl nil naturalnumbers nil)
    (>= const-decl "bool" reals nil)
    (int nonempty-type-eq-decl nil integers nil)
    (integer_pred const-decl "[rational -> boolean]" integers nil)
    (rational nonempty-type-from-decl nil rationals nil)
    (rational_pred const-decl "[real -> boolean]" rationals nil)
    (null? adt-recognizer-decl "[list -> boolean]" list_adt nil)
    (real nonempty-type-from-decl nil reals nil)
    (OR const-decl "[bool, bool -> bool]" booleans nil)
    (Matrix type-eq-decl nil matrices nil)
    (real_pred const-decl "[number_field -> boolean]" reals nil)
    (number_field nonempty-type-from-decl nil number_fields nil)
    (number_field_pred const-decl "[number -> boolean]" number_fields
     nil)
    (AND const-decl "[bool, bool -> bool]" booleans nil)
    (every adt-def-decl "boolean" list_adt nil)
    (PRED type-eq-decl nil defined_types nil)
    (list type-decl nil list_adt nil)
    (number nonempty-type-decl nil numbers nil)
    (NOT const-decl "[bool -> bool]" booleans nil)
    (bool nonempty-type-eq-decl nil booleans nil)
    (boolean nonempty-type-decl nil booleans nil)
    (int_minus_int_is_int application-judgement "int" integers nil)
    (real_ge_is_total_order name-judgement "(total_order?[real])"
     real_props nil)
    (real_le_is_total_order name-judgement "(total_order?[real])"
     real_props nil)
    (real_lt_is_strict_total_order name-judgement
     "(strict_total_order?[real])" real_props nil))
   nil))
 (diagonalize_TCC4 0
  (diagonalize_TCC4-1 nil 3615559416
   ("" (skeep)
    (("" (assert)
      (("" (split +)
        (("1" (typepred "T") (("1" (propax) nil nil)) nil)
         ("2" (flatten)
          (("2" (typepred "i")
            (("2" (typepred "j")
              (("2" (expand "d_point2")
                (("2" (flatten)
                  (("2" (expand "d_point1")
                    (("2" (flatten)
                      (("2" (replace -6)
                        (("2" (replace -7)
                          (("2" (assert)
                            (("2" (skosimp*)
                              (("2"
                                (inst - "k!1" "p!1")
                                (("2" (ground) nil nil))
                                nil))
                              nil))
                            nil))
                          nil))
                        nil))
                      nil))
                    nil))
                  nil))
                nil))
              nil))
            nil))
          nil)
         ("3" (typepred "T") (("3" (propax) nil nil)) nil)
         ("4" (typepred "R") (("4" (propax) nil nil)) nil)
         ("5" (typepred "R") (("5" (propax) nil nil)) nil)
         ("6" (typepred "Q") (("6" (propax) nil nil)) nil))
        nil))
      nil))
    nil)
   ((Id const-decl "{M: SquareMatrix(pm) |
         (FORALL (i, j):
            entry(M)(i, j) = IF i < pm AND i = j THEN 1 ELSE 0 ENDIF)
          AND
          (FORALL (pn: posnat, N: MatrixMN(pm, pn)): M * N = N) AND
           (FORALL (pn: posnat, N: MatrixMN(pn, pm)): N * M = N)}"
     matrices nil)
    (IF const-decl "[boolean, T, T -> T]" if_def nil)
    (real_gt_is_strict_total_order name-judgement
     "(strict_total_order?[real])" real_props nil)
    (real_lt_is_strict_total_order name-judgement
     "(strict_total_order?[real])" real_props nil)
    (real_le_is_total_order name-judgement "(total_order?[real])"
     real_props nil)
    (d_point2 const-decl "bool" matrix_diag nil)
    (d_point1 const-decl "bool" matrix_diag nil)
    (FALSE const-decl "bool" booleans nil)
    (is_simple_prod? const-decl "bool" matrix_det nil)
    (* const-decl "{A: MatrixMN(rows(M), columns(N)) |
         FORALL (i, j): entry(A)(i, j) = row(M)(i) * col(N)(j)}"
       matrices nil)
    (col def-decl "VectorN(rows(M))" matrices nil)
    (VectorN type-eq-decl nil matrices nil)
    (row const-decl "Vector" matrices nil)
    (* const-decl "real" matrices nil)
    (Vector type-eq-decl nil matrices nil)
    (entry const-decl "real" matrices nil)
    (MatrixMN type-eq-decl nil matrices nil)
    (IMPLIES const-decl "[bool, bool -> bool]" booleans nil)
    (upper_triangular? const-decl "bool" matrix_det nil)
    (SquareMatrix type-eq-decl nil matrices nil)
    (posnat nonempty-type-eq-decl nil integers nil)
    (nonneg_int nonempty-type-eq-decl nil integers nil)
    (Square type-eq-decl nil matrices nil)
    (PosFullMatrix type-eq-decl nil matrices nil)
    (columns def-decl "{c: nat |
         (FORALL (i: below(length(M))): length(nth(M, i)) <= c) AND
          (null?(M) AND c = 0 OR
            (EXISTS (i: below(length(M))): length(nth(M, i)) = c))}"
             matrices nil)
    (<= const-decl "bool" reals nil)
    (rows const-decl "nat" matrices nil)
    (> const-decl "bool" reals nil)
    (FullMatrix type-eq-decl nil matrices nil)
    (nth def-decl "T" list_props nil)
    (below type-eq-decl nil nat_types nil)
    (= const-decl "[T, T -> boolean]" equalities nil)
    (below type-eq-decl nil naturalnumbers nil)
    (length def-decl "nat" list_props nil)
    (< const-decl "bool" reals nil)
    (nat nonempty-type-eq-decl nil naturalnumbers nil)
    (>= const-decl "bool" reals nil)
    (int nonempty-type-eq-decl nil integers nil)
    (integer_pred const-decl "[rational -> boolean]" integers nil)
    (rational nonempty-type-from-decl nil rationals nil)
    (rational_pred const-decl "[real -> boolean]" rationals nil)
    (null? adt-recognizer-decl "[list -> boolean]" list_adt nil)
    (real nonempty-type-from-decl nil reals nil)
    (OR const-decl "[bool, bool -> bool]" booleans nil)
    (Matrix type-eq-decl nil matrices nil)
    (real_pred const-decl "[number_field -> boolean]" reals nil)
    (number_field nonempty-type-from-decl nil number_fields nil)
    (number_field_pred const-decl "[number -> boolean]" number_fields
     nil)
    (AND const-decl "[bool, bool -> bool]" booleans nil)
    (every adt-def-decl "boolean" list_adt nil)
    (PRED type-eq-decl nil defined_types nil)
    (list type-decl nil list_adt nil)
    (number nonempty-type-decl nil numbers nil)
    (NOT const-decl "[bool -> bool]" booleans nil)
    (bool nonempty-type-eq-decl nil booleans nil)
    (boolean nonempty-type-decl nil booleans nil))
   nil))
 (diagonalize_TCC5 0
  (diagonalize_TCC5-1 nil 3615559416
   ("" (skeep)
    (("" (case "i = j")
      (("1" (hide -2)
        (("1" (case "j = 0")
          (("1" (ground) nil nil)
           ("2" (assert)
            (("2" (typepred "j")
              (("2" (expand "d_point1")
                (("2" (hide 3)
                  (("2" (flatten)
                    (("2" (assert)
                      (("2" (skeep)
                        (("2" (case "NOT p = j")
                          (("1" (assert)
                            (("1" (inst - "k!1" "p")
                              (("1" (ground) nil nil)) nil))
                            nil)
                           ("2" (assert)
                            (("2" (replace -1)
                              (("2"
                                (assert)
                                (("2"
                                  (typepred "i")
                                  (("2"
                                    (expand "d_point2")
                                    (("2"
                                      (inst - "k!1")
                                      (("2" (ground) nil nil))
                                      nil))
                                    nil))
                                  nil))
                                nil))
                              nil))
                            nil))
                          nil))
                        nil))
                      nil))
                    nil))
                  nil))
                nil))
              nil))
            nil))
          nil))
        nil)
       ("2" (assert)
        (("2" (case "j = 0")
          (("1" (replace -1)
            (("1" (assert)
              (("1" (typepred "i")
                (("1" (expand "d_point2") (("1" (propax) nil nil))
                  nil))
                nil))
              nil))
            nil)
           ("2" (assert)
            (("2" (expand "d_point1")
              (("2" (typepred "j")
                (("2" (expand "d_point1")
                  (("2" (flatten)
                    (("2" (assert)
                      (("2" (skeep)
                        (("2" (case "NOT k!1 = p")
                          (("1" (inst - "k!1" "p")
                            (("1" (ground) nil nil)) nil)
                           ("2" (replace -1) (("2" (assertnil nil))
                            nil))
                          nil))
                        nil))
                      nil))
                    nil))
                  nil))
                nil))
              nil))
            nil))
          nil))
        nil))
      nil))
    nil)
   ((d_point1 const-decl "bool" matrix_diag nil)
    (upper_triangular? const-decl "bool" matrix_det nil)
    (SquareMatrix type-eq-decl nil matrices nil)
    (posnat nonempty-type-eq-decl nil integers nil)
    (nonneg_int nonempty-type-eq-decl nil integers nil)
    (d_point2 const-decl "bool" matrix_diag nil)
    (Square type-eq-decl nil matrices nil)
    (PosFullMatrix type-eq-decl nil matrices nil)
    (columns def-decl "{c: nat |
         (FORALL (i: below(length(M))): length(nth(M, i)) <= c) AND
          (null?(M) AND c = 0 OR
            (EXISTS (i: below(length(M))): length(nth(M, i)) = c))}"
             matrices nil)
    (<= const-decl "bool" reals nil)
    (rows const-decl "nat" matrices nil)
    (> const-decl "bool" reals nil)
    (FullMatrix type-eq-decl nil matrices nil)
    (nth def-decl "T" list_props nil)
    (below type-eq-decl nil nat_types nil)
    (below type-eq-decl nil naturalnumbers nil)
    (length def-decl "nat" list_props nil)
    (< const-decl "bool" reals nil)
    (null? adt-recognizer-decl "[list -> boolean]" list_adt nil)
    (OR const-decl "[bool, bool -> bool]" booleans nil)
    (Matrix type-eq-decl nil matrices nil)
    (AND const-decl "[bool, bool -> bool]" booleans nil)
    (every adt-def-decl "boolean" list_adt nil)
    (PRED type-eq-decl nil defined_types nil)
    (list type-decl nil list_adt nil)
    (nat nonempty-type-eq-decl nil naturalnumbers nil)
    (>= const-decl "bool" reals nil)
    (bool nonempty-type-eq-decl nil booleans nil)
    (int nonempty-type-eq-decl nil integers nil)
    (integer_pred const-decl "[rational -> boolean]" integers nil)
    (rational nonempty-type-from-decl nil rationals nil)
    (rational_pred const-decl "[real -> boolean]" rationals nil)
    (real nonempty-type-from-decl nil reals nil)
    (real_pred const-decl "[number_field -> boolean]" reals nil)
    (number_field nonempty-type-from-decl nil number_fields nil)
    (number_field_pred const-decl "[number -> boolean]" number_fields
     nil)
    (= const-decl "[T, T -> boolean]" equalities nil)
    (boolean nonempty-type-decl nil booleans nil)
    (number nonempty-type-decl nil numbers nil)
    (real_ge_is_total_order name-judgement "(total_order?[real])"
     real_props nil)
    (int_minus_int_is_int application-judgement "int" integers nil)
    (NOT const-decl "[bool -> bool]" booleans nil)
    (real_lt_is_strict_total_order name-judgement
     "(strict_total_order?[real])" real_props nil)
    (real_gt_is_strict_total_order name-judgement
     "(strict_total_order?[real])" real_props nil)
    (even_minus_odd_is_odd application-judgement "odd_int" integers
     nil))
   nil))
 (diagonalize_TCC6 0
  (diagonalize_TCC6-1 nil 3615559416
   ("" (skeep)
    (("" (typepred "j")
      (("" (typepred "i")
        (("" (expand "d_point2")
          (("" (assert)
            (("" (typepred "i")
              (("" (expand "d_point2") (("" (propax) nil nil)) nil))
              nil))
            nil))
          nil))
        nil))
      nil))
    nil)
   ((upper_triangular? const-decl "bool" matrix_det nil)
    (SquareMatrix type-eq-decl nil matrices nil)
    (posnat nonempty-type-eq-decl nil integers nil)
    (nonneg_int nonempty-type-eq-decl nil integers nil)
    (d_point1 const-decl "bool" matrix_diag nil)
    (Square type-eq-decl nil matrices nil)
    (PosFullMatrix type-eq-decl nil matrices nil)
    (columns def-decl "{c: nat |
         (FORALL (i: below(length(M))): length(nth(M, i)) <= c) AND
          (null?(M) AND c = 0 OR
            (EXISTS (i: below(length(M))): length(nth(M, i)) = c))}"
             matrices nil)
    (<= const-decl "bool" reals nil)
    (rows const-decl "nat" matrices nil)
    (> const-decl "bool" reals nil)
    (FullMatrix type-eq-decl nil matrices nil)
    (nth def-decl "T" list_props nil)
    (below type-eq-decl nil nat_types nil)
    (= const-decl "[T, T -> boolean]" equalities nil)
    (below type-eq-decl nil naturalnumbers nil)
    (length def-decl "nat" list_props nil)
    (< const-decl "bool" reals nil)
    (nat nonempty-type-eq-decl nil naturalnumbers nil)
    (>= const-decl "bool" reals nil)
    (int nonempty-type-eq-decl nil integers nil)
    (integer_pred const-decl "[rational -> boolean]" integers nil)
    (rational nonempty-type-from-decl nil rationals nil)
    (rational_pred const-decl "[real -> boolean]" rationals nil)
    (null? adt-recognizer-decl "[list -> boolean]" list_adt nil)
    (real nonempty-type-from-decl nil reals nil)
    (OR const-decl "[bool, bool -> bool]" booleans nil)
    (Matrix type-eq-decl nil matrices nil)
    (real_pred const-decl "[number_field -> boolean]" reals nil)
    (number_field nonempty-type-from-decl nil number_fields nil)
    (number_field_pred const-decl "[number -> boolean]" number_fields
     nil)
    (AND const-decl "[bool, bool -> bool]" booleans nil)
    (every adt-def-decl "boolean" list_adt nil)
    (PRED type-eq-decl nil defined_types nil)
    (list type-decl nil list_adt nil)
    (number nonempty-type-decl nil numbers nil)
    (NOT const-decl "[bool -> bool]" booleans nil)
    (bool nonempty-type-eq-decl nil booleans nil)
    (boolean nonempty-type-decl nil booleans nil)
    (real_le_is_total_order name-judgement "(total_order?[real])"
     real_props nil)
    (int_minus_int_is_int application-judgement "int" integers nil)
    (real_lt_is_strict_total_order name-judgement
     "(strict_total_order?[real])" real_props nil)
    (d_point2 const-decl "bool" matrix_diag nil))
   nil))
 (diagonalize_TCC7 0
  (diagonalize_TCC7-1 nil 3615559416 ("" (subtype-tcc) nil nil)
   ((boolean nonempty-type-decl nil booleans nil)
    (bool nonempty-type-eq-decl nil booleans nil)
    (NOT const-decl "[bool -> bool]" booleans nil)
    (number nonempty-type-decl nil numbers nil)
    (number_field_pred const-decl "[number -> boolean]" number_fields
     nil)
    (number_field nonempty-type-from-decl nil number_fields nil)
    (real_pred const-decl "[number_field -> boolean]" reals nil)
    (real nonempty-type-from-decl nil reals nil)
    (> const-decl "bool" reals nil)
    (rational_pred const-decl "[real -> boolean]" rationals nil)
    (rational nonempty-type-from-decl nil rationals nil)
    (integer_pred const-decl "[rational -> boolean]" integers nil)
    (int nonempty-type-eq-decl nil integers nil)
    (>= const-decl "bool" reals nil)
    (nonneg_int nonempty-type-eq-decl nil integers nil)
    (posnat nonempty-type-eq-decl nil integers nil)
    (list type-decl nil list_adt nil)
    (PRED type-eq-decl nil defined_types nil)
    (every adt-def-decl "boolean" list_adt nil)
    (AND const-decl "[bool, bool -> bool]" booleans nil)
    (Matrix type-eq-decl nil matrices nil)
    (OR const-decl "[bool, bool -> bool]" booleans nil)
    (null? adt-recognizer-decl "[list -> boolean]" list_adt nil)
    (nat nonempty-type-eq-decl nil naturalnumbers nil)
    (< const-decl "bool" reals nil)
    (length def-decl "nat" list_props nil)
    (below type-eq-decl nil naturalnumbers nil)
    (= const-decl "[T, T -> boolean]" equalities nil)
    (below type-eq-decl nil nat_types nil)
    (nth def-decl "T" list_props nil)
    (FullMatrix type-eq-decl nil matrices nil)
    (rows const-decl "nat" matrices nil)
    (<= const-decl "bool" reals nil)
    (columns def-decl "{c: nat |
         (FORALL (i: below(length(M))): length(nth(M, i)) <= c) AND
          (null?(M) AND c = 0 OR
            (EXISTS (i: below(length(M))): length(nth(M, i)) = c))}"
             matrices nil)
    (PosFullMatrix type-eq-decl nil matrices nil)
    (Square type-eq-decl nil matrices nil)
    (SquareMatrix type-eq-decl nil matrices nil)
    (upper_triangular? const-decl "bool" matrix_det nil)
    (is_simple_prod? const-decl "bool" matrix_det nil)
    (FALSE const-decl "bool" booleans nil)
    (IMPLIES const-decl "[bool, bool -> bool]" booleans nil)
    (MatrixMN type-eq-decl nil matrices nil)
    (Vector type-eq-decl nil matrices nil)
    (* const-decl "real" matrices nil)
    (row const-decl "Vector" matrices nil)
    (VectorN type-eq-decl nil matrices nil)
    (col def-decl "VectorN(rows(M))" matrices nil)
    (* const-decl "{A: MatrixMN(rows(M), columns(N)) |
         FORALL (i, j): entry(A)(i, j) = row(M)(i) * col(N)(j)}"
       matrices nil)
    (IF const-decl "[boolean, T, T -> T]" if_def nil)
    (Id const-decl "{M: SquareMatrix(pm) |
         (FORALL (i, j):
            entry(M)(i, j) = IF i < pm AND i = j THEN 1 ELSE 0 ENDIF)
          AND
          (FORALL (pn: posnat, N: MatrixMN(pm, pn)): M * N = N) AND
           (FORALL (pn: posnat, N: MatrixMN(pn, pm)): N * M = N)}"
     matrices nil)
    (d_point1 const-decl "bool" matrix_diag nil)
    (d_point2 const-decl "bool" matrix_diag nil)
    (real_gt_is_strict_total_order name-judgement
     "(strict_total_order?[real])" real_props nil)
    (real_lt_is_strict_total_order name-judgement
     "(strict_total_order?[real])" real_props nil)
    (real_le_is_total_order name-judgement "(total_order?[real])"
     real_props nil)
    (real_ge_is_total_order name-judgement "(total_order?[real])"
     real_props nil)
    (int_minus_int_is_int application-judgement "int" integers nil)
    (int_max application-judgement "{k: int | i <= k AND j <= k}"
     real_defs nil)
    (rat_max application-judgement "{s: rat | s >= q AND s >= r}"
     real_defs nil)
    (is_simple_seq? const-decl "bool" matrix_det nil)
    (Easr const-decl "SquareMatrix(pn)" matrix_det nil)
    (/= const-decl "boolean" notequal nil)
    (form_matrix const-decl "{M: MatrixMN(m, n) |
         FORALL (i: below(m), j: below(n)): nth(row(M)(i), j) = F(i, j)}"
                 matrices nil)
    (array2list const-decl
                "{l: listn(n) | FORALL (i: below(n)): a(i) = nth(l, i)}"
                array2list "structures/")
    (entry const-decl "real" matrices nil))
   nil))
 (diagonalize_TCC8 0
  (diagonalize_TCC8-1 nil 3615559416
   ("" (skeep)
    (("" (rewrite "lex2_lt")
      (("1" (typepred "i")
        (("1" (expand "d_point2") (("1" (propax) nil nil)) nil)) nil)
       ("2" (assert)
        (("2" (typepred "j")
          (("2" (typepred "i")
            (("2" (expand "d_point2") (("2" (propax) nil nil)) nil))
            nil))
          nil))
        nil))
      nil))
    nil)
   ((real_ge_is_total_order name-judgement "(total_order?[real])"
     real_props nil)
    (int_minus_int_is_int application-judgement "int" integers nil)
    (lex2_lt formula-decl nil lex2 nil)
    (number nonempty-type-decl nil numbers nil)
    (boolean nonempty-type-decl nil booleans nil)
    (number_field_pred const-decl "[number -> boolean]" number_fields
     nil)
    (number_field nonempty-type-from-decl nil number_fields nil)
    (real_pred const-decl "[number_field -> boolean]" reals nil)
    (real nonempty-type-from-decl nil reals nil)
    (rational_pred const-decl "[real -> boolean]" rationals nil)
    (rational nonempty-type-from-decl nil rationals nil)
    (integer_pred const-decl "[rational -> boolean]" integers nil)
    (int nonempty-type-eq-decl nil integers nil)
    (bool nonempty-type-eq-decl nil booleans nil)
    (>= const-decl "bool" reals nil)
    (nat nonempty-type-eq-decl nil naturalnumbers nil)
    (numfield nonempty-type-eq-decl nil number_fields nil)
    (- const-decl "[numfield, numfield -> numfield]" number_fields nil)
    (list type-decl nil list_adt nil)
    (PRED type-eq-decl nil defined_types nil)
    (every adt-def-decl "boolean" list_adt nil)
    (AND const-decl "[bool, bool -> bool]" booleans nil)
    (Matrix type-eq-decl nil matrices nil)
    (OR const-decl "[bool, bool -> bool]" booleans nil)
    (null? adt-recognizer-decl "[list -> boolean]" list_adt nil)
    (< const-decl "bool" reals nil)
    (length def-decl "nat" list_props nil)
    (below type-eq-decl nil naturalnumbers nil)
    (= const-decl "[T, T -> boolean]" equalities nil)
    (below type-eq-decl nil nat_types nil)
    (nth def-decl "T" list_props nil)
    (FullMatrix type-eq-decl nil matrices nil)
    (> const-decl "bool" reals nil)
    (rows const-decl "nat" matrices nil)
    (<= const-decl "bool" reals nil)
    (columns def-decl "{c: nat |
         (FORALL (i: below(length(M))): length(nth(M, i)) <= c) AND
          (null?(M) AND c = 0 OR
            (EXISTS (i: below(length(M))): length(nth(M, i)) = c))}"
             matrices nil)
    (PosFullMatrix type-eq-decl nil matrices nil)
    (Square type-eq-decl nil matrices nil)
    (d_point1 const-decl "bool" matrix_diag nil)
    (nonneg_int nonempty-type-eq-decl nil integers nil)
    (posnat nonempty-type-eq-decl nil integers nil)
    (SquareMatrix type-eq-decl nil matrices nil)
    (upper_triangular? const-decl "bool" matrix_det nil)
    (d_point2 const-decl "bool" matrix_diag nil)
    (real_lt_is_strict_total_order name-judgement
     "(strict_total_order?[real])" real_props nil)
    (NOT const-decl "[bool -> bool]" booleans nil))
   nil))
 (diagonalize_TCC9 0
  (diagonalize_TCC9-1 nil 3615559416
   ("" (skeep)
    (("" (typepred "i")
      (("" (expand "d_point2")
        (("" (assert)
          (("" (flatten)
            (("" (assert)
              (("" (case "i = rows(S)-1")
                (("1" (typepred "i")
                  (("1" (typepred "j")
                    (("1" (expand "d_point2")
                      (("1" (expand "d_point1")
                        (("1" (ground) nil nil)) nil))
                      nil))
                    nil))
                  nil)
                 ("2" (assert)
                  (("2" (skeep)
                    (("2" (case "NOT k!1 = i")
                      (("1" (inst - "k!1") (("1" (assertnil nil))
                        nil)
                       ("2" (assertnil nil))
                      nil))
                    nil))
                  nil))
                nil))
              nil))
            nil))
          nil))
        nil))
      nil))
    nil)
   ((d_point1 const-decl "bool" matrix_diag nil)
    (upper_triangular? const-decl "bool" matrix_det nil)
    (SquareMatrix type-eq-decl nil matrices nil)
    (posnat nonempty-type-eq-decl nil integers nil)
    (nonneg_int nonempty-type-eq-decl nil integers nil)
    (d_point2 const-decl "bool" matrix_diag nil)
    (Square type-eq-decl nil matrices nil)
    (PosFullMatrix type-eq-decl nil matrices nil)
    (columns def-decl "{c: nat |
         (FORALL (i: below(length(M))): length(nth(M, i)) <= c) AND
          (null?(M) AND c = 0 OR
            (EXISTS (i: below(length(M))): length(nth(M, i)) = c))}"
             matrices nil)
    (<= const-decl "bool" reals nil)
    (rows const-decl "nat" matrices nil)
    (> const-decl "bool" reals nil)
    (FullMatrix type-eq-decl nil matrices nil)
    (nth def-decl "T" list_props nil)
    (below type-eq-decl nil nat_types nil)
    (= const-decl "[T, T -> boolean]" equalities nil)
    (below type-eq-decl nil naturalnumbers nil)
    (length def-decl "nat" list_props nil)
    (< const-decl "bool" reals nil)
    (nat nonempty-type-eq-decl nil naturalnumbers nil)
    (>= const-decl "bool" reals nil)
    (int nonempty-type-eq-decl nil integers nil)
    (integer_pred const-decl "[rational -> boolean]" integers nil)
    (rational nonempty-type-from-decl nil rationals nil)
    (rational_pred const-decl "[real -> boolean]" rationals nil)
    (null? adt-recognizer-decl "[list -> boolean]" list_adt nil)
    (real nonempty-type-from-decl nil reals nil)
    (OR const-decl "[bool, bool -> bool]" booleans nil)
    (Matrix type-eq-decl nil matrices nil)
    (real_pred const-decl "[number_field -> boolean]" reals nil)
    (number_field nonempty-type-from-decl nil number_fields nil)
    (number_field_pred const-decl "[number -> boolean]" number_fields
     nil)
    (AND const-decl "[bool, bool -> bool]" booleans nil)
    (every adt-def-decl "boolean" list_adt nil)
    (PRED type-eq-decl nil defined_types nil)
    (list type-decl nil list_adt nil)
    (number nonempty-type-decl nil numbers nil)
    (NOT const-decl "[bool -> bool]" booleans nil)
    (bool nonempty-type-eq-decl nil booleans nil)
    (boolean nonempty-type-decl nil booleans nil)
    (posint_plus_nnint_is_posint application-judgement "posint"
     integers nil)
    (real_lt_is_strict_total_order name-judgement
     "(strict_total_order?[real])" real_props nil)
    (real_le_is_total_order name-judgement "(total_order?[real])"
     real_props nil)
    (- const-decl "[numfield, numfield -> numfield]" number_fields nil)
    (numfield nonempty-type-eq-decl nil number_fields nil)
    (int_minus_int_is_int application-judgement "int" integers nil))
   nil))
 (diagonalize_TCC10 0
  (diagonalize_TCC10-1 nil 3615559416
   ("" (skeep) (("" (assertnil nil)) nil)
   ((int_minus_int_is_int application-judgement "int" integers nil)
    (rat_max application-judgement "{s: rat | s >= q AND s >= r}"
     real_defs nil)
    (int_max application-judgement "{k: int | i <= k AND j <= k}"
     real_defs nil)
    (real_ge_is_total_order name-judgement "(total_order?[real])"
     real_props nil))
   nil))
 (diagonalize_TCC11 0
  (diagonalize_TCC11-1 nil 3615559416
   ("" (skeep)
    (("" (assert)
      (("" (rewrite "lex2_lt")
        (("1" (typepred "i")
          (("1" (expand "d_point2") (("1" (propax) nil nil)) nil)) nil)
         ("2" (typepred "i")
          (("2" (expand "d_point2") (("2" (propax) nil nil)) nil))
          nil))
        nil))
      nil))
    nil)
   ((int_minus_int_is_int application-judgement "int" integers nil)
    (nnint_plus_posint_is_posint application-judgement "posint"
     integers nil)
    (NOT const-decl "[bool -> bool]" booleans nil)
    (real_lt_is_strict_total_order name-judgement
     "(strict_total_order?[real])" real_props nil)
    (d_point2 const-decl "bool" matrix_diag nil)
    (- const-decl "[numfield, numfield -> numfield]" number_fields nil)
    (+ const-decl "[numfield, numfield -> numfield]" number_fields nil)
    (numfield nonempty-type-eq-decl nil number_fields nil)
    (upper_triangular? const-decl "bool" matrix_det nil)
    (SquareMatrix type-eq-decl nil matrices nil)
    (posnat nonempty-type-eq-decl nil integers nil)
    (nonneg_int nonempty-type-eq-decl nil integers nil)
    (d_point1 const-decl "bool" matrix_diag nil)
    (Square type-eq-decl nil matrices nil)
    (PosFullMatrix type-eq-decl nil matrices nil)
    (columns def-decl "{c: nat |
         (FORALL (i: below(length(M))): length(nth(M, i)) <= c) AND
          (null?(M) AND c = 0 OR
            (EXISTS (i: below(length(M))): length(nth(M, i)) = c))}"
             matrices nil)
    (<= const-decl "bool" reals nil)
    (rows const-decl "nat" matrices nil)
    (> const-decl "bool" reals nil)
    (FullMatrix type-eq-decl nil matrices nil)
    (nth def-decl "T" list_props nil)
    (below type-eq-decl nil nat_types nil)
    (= const-decl "[T, T -> boolean]" equalities nil)
    (below type-eq-decl nil naturalnumbers nil)
    (length def-decl "nat" list_props nil)
    (< const-decl "bool" reals nil)
    (null? adt-recognizer-decl "[list -> boolean]" list_adt nil)
    (OR const-decl "[bool, bool -> bool]" booleans nil)
    (Matrix type-eq-decl nil matrices nil)
    (AND const-decl "[bool, bool -> bool]" booleans nil)
    (every adt-def-decl "boolean" list_adt nil)
    (PRED type-eq-decl nil defined_types nil)
    (list type-decl nil list_adt nil)
    (nat nonempty-type-eq-decl nil naturalnumbers nil)
    (>= const-decl "bool" reals nil)
    (bool nonempty-type-eq-decl nil booleans nil)
    (int nonempty-type-eq-decl nil integers nil)
    (integer_pred const-decl "[rational -> boolean]" integers nil)
    (rational nonempty-type-from-decl nil rationals nil)
    (rational_pred const-decl "[real -> boolean]" rationals nil)
    (real nonempty-type-from-decl nil reals nil)
    (real_pred const-decl "[number_field -> boolean]" reals nil)
    (number_field nonempty-type-from-decl nil number_fields nil)
    (number_field_pred const-decl "[number -> boolean]" number_fields
     nil)
    (boolean nonempty-type-decl nil booleans nil)
    (number nonempty-type-decl nil numbers nil)
    (lex2_lt formula-decl nil lex2 nil)
    (int_plus_int_is_int application-judgement "int" integers nil)
    (real_ge_is_total_order name-judgement "(total_order?[real])"
     real_props nil))
   nil))
 (diagonalize_TCC12 0
  (diagonalize_TCC12-1 nil 3615559416
   ("" (skeep)
    (("" (skeep)
      (("" (rewrite "length_add_vect_same")
        (("1" (rewrite "length_row")
          (("1" (typepred "i")
            (("1" (typepred "j")
              (("1" (expand "d_point1")
                (("1" (expand "d_point2")
                  (("1" (flatten) (("1" (assertnil nil)) nil)) nil))
                nil))
              nil))
            nil))
          nil)
         ("2" (rewrite "length_scal_vect")
          (("2" (rewrite "length_row")
            (("2" (rewrite "length_row")
              (("2" (typepred "i")
                (("2" (typepred "j")
                  (("2" (expand "d_point1")
                    (("2" (expand "d_point2")
                      (("2" (flatten) (("2" (assertnil nil)) nil))
                      nil))
                    nil))
                  nil))
                nil))
              nil))
            nil))
          nil))
        nil))
      nil))
    nil)
   ((length_scal_vect formula-decl nil matrices nil)
    (length_row formula-decl nil matrix_props nil)
    (real_ge_is_total_order name-judgement "(total_order?[real])"
     real_props nil)
    (real_le_is_total_order name-judgement "(total_order?[real])"
     real_props nil)
    (real_lt_is_strict_total_order name-judgement
     "(strict_total_order?[real])" real_props nil)
    (NOT const-decl "[bool -> bool]" booleans nil)
    (real_div_nzreal_is_real application-judgement "real" reals nil)
    (minus_real_is_real application-judgement "real" reals nil)
    (* const-decl "VectorN(length(v2))" matrices nil)
    (VectorN type-eq-decl nil matrices nil)
    (d_point1 const-decl "bool" matrix_diag nil)
    (d_point2 const-decl "bool" matrix_diag nil)
    (upper_triangular? const-decl "bool" matrix_det nil)
    (SquareMatrix type-eq-decl nil matrices nil)
    (posnat nonempty-type-eq-decl nil integers nil)
    (nonneg_int nonempty-type-eq-decl nil integers nil)
    (Square type-eq-decl nil matrices nil)
    (PosFullMatrix type-eq-decl nil matrices nil)
    (columns def-decl "{c: nat |
         (FORALL (i: below(length(M))): length(nth(M, i)) <= c) AND
          (null?(M) AND c = 0 OR
            (EXISTS (i: below(length(M))): length(nth(M, i)) = c))}"
             matrices nil)
    (<= const-decl "bool" reals nil)
    (rows const-decl "nat" matrices nil)
    (> const-decl "bool" reals nil)
    (FullMatrix type-eq-decl nil matrices nil)
    (nth def-decl "T" list_props nil)
    (below type-eq-decl nil nat_types nil)
    (= const-decl "[T, T -> boolean]" equalities nil)
    (below type-eq-decl nil naturalnumbers nil)
    (length def-decl "nat" list_props nil)
    (< const-decl "bool" reals nil)
    (null? adt-recognizer-decl "[list -> boolean]" list_adt nil)
    (OR const-decl "[bool, bool -> bool]" booleans nil)
    (row const-decl "Vector" matrices nil)
    (nat nonempty-type-eq-decl nil naturalnumbers nil)
    (>= const-decl "bool" reals nil)
    (int nonempty-type-eq-decl nil integers nil)
    (integer_pred const-decl "[rational -> boolean]" integers nil)
    (rational nonempty-type-from-decl nil rationals nil)
    (rational_pred const-decl "[real -> boolean]" rationals nil)
    (real nonempty-type-from-decl nil reals nil)
    (Matrix type-eq-decl nil matrices nil)
    (Vector type-eq-decl nil matrices nil)
    (real_pred const-decl "[number_field -> boolean]" reals nil)
    (number_field nonempty-type-from-decl nil number_fields nil)
    (number_field_pred const-decl "[number -> boolean]" number_fields
     nil)
    (AND const-decl "[bool, bool -> bool]" booleans nil)
    (every adt-def-decl "boolean" list_adt nil)
    (PRED type-eq-decl nil defined_types nil)
    (bool nonempty-type-eq-decl nil booleans nil)
    (boolean nonempty-type-decl nil booleans nil)
    (list type-decl nil list_adt nil)
    (number nonempty-type-decl nil numbers nil)
    (length_add_vect_same formula-decl nil matrices nil))
   nil))
 (diagonalize_TCC13 0
  (diagonalize_TCC13-1 nil 3615559416
   ("" (skeep)
    (("" (skeep)
      (("" (rewrite "rows_replace_row")
        (("1" (rewrite "columns_replace_row")
          (("1" (assert)
            (("1" (expand "upper_triangular?")
              (("1" (skosimp*)
                (("1" (copy -3)
                  (("1" (label "igz" -1)
                    (("1" (hide "igz")
                      (("1" (rewrite "rows_replace_row")
                        (("1" (reveal "igz")
                          (("1" (rewrite "entry_replace_row")
                            (("1" (lift-if)
                              (("1"
                                (assert)
                                (("1"
                                  (split 6)
                                  (("1"
                                    (flatten)
                                    (("1"
                                      (replace -1)
                                      (("1"
                                        (typepred "S")
                                        (("1"
                                          (hide -2)
                                          (("1"
                                            (expand
                                             "upper_triangular?")
                                            (("1"
                                              (rewrite "access_sum")
                                              (("1"
                                                (rewrite "access_scal")
                                                (("1"
                                                  (rewrite
                                                   "access_row")
                                                  (("1"
                                                    (rewrite
                                                     "access_row")
                                                    (("1"
                                                      (inst-cp
                                                       -
                                                       "i"
                                                       "j!1")
                                                      (("1"
                                                        (inst
                                                         -
                                                         "j"
                                                         "j!1")
                                                        (("1"
                                                          (assert)
                                                          (("1"
                                                            (assert)
                                                            (("1"
                                                              (typepred
                                                               "i")
                                                              (("1"
                                                                (typepred
                                                                 "j")
                                                                (("1"
                                                                  (expand
                                                                   "d_point1")
                                                                  (("1"
                                                                    (expand
                                                                     "d_point2")
                                                                    (("1"
                                                                      (flatten)
                                                                      (("1"
                                                                        (assert)
                                                                        nil
                                                                        nil))
                                                                      nil))
                                                                    nil))
                                                                  nil))
                                                                nil))
                                                              nil))
                                                            nil))
                                                          nil))
                                                        nil))
                                                      nil))
                                                    nil))
                                                  nil))
                                                nil))
                                              nil))
                                            nil))
                                          nil))
                                        nil))
                                      nil))
                                    nil)
                                   ("2"
                                    (flatten)
                                    (("2"
                                      (typepred "S")
                                      (("2"
                                        (expand "upper_triangular?")
                                        (("2"
                                          (inst - "i!1" "j!1")
                                          (("2" (assertnil nil))
                                          nil))
                                        nil))
                                      nil))
                                    nil))
                                  nil))
                                nil))
                              nil)
                             ("2" (rewrite "length_add_vect_same")
                              (("1"
                                (rewrite "length_row")
                                (("1"
                                  (typepred "i")
                                  (("1"
                                    (typepred "j")
                                    (("1"
                                      (expand "d_point1")
                                      (("1"
                                        (expand "d_point2")
                                        (("1"
                                          (flatten)
                                          (("1" (assertnil nil))
                                          nil))
                                        nil))
                                      nil))
                                    nil))
                                  nil))
                                nil)
                               ("2"
                                (rewrite "length_scal_vect")
                                (("2"
                                  (rewrite "length_row")
                                  (("2"
                                    (rewrite "length_row")
                                    (("2"
                                      (typepred "i")
                                      (("2"
                                        (typepred "j")
                                        (("2"
                                          (expand "d_point1")
                                          (("2"
                                            (expand "d_point2")
                                            (("2"
                                              (flatten)
                                              (("2" (assertnil nil))
                                              nil))
                                            nil))
                                          nil))
                                        nil))
                                      nil))
                                    nil))
                                  nil))
                                nil))
                              nil))
                            nil))
                          nil)
                         ("2" (rewrite "length_add_vect_same")
                          (("1" (rewrite "length_row")
                            (("1" (typepred "i")
                              (("1"
                                (typepred "j")
                                (("1"
                                  (expand "d_point1")
                                  (("1"
                                    (expand "d_point2")
                                    (("1"
                                      (flatten)
                                      (("1" (assertnil nil))
                                      nil))
                                    nil))
                                  nil))
                                nil))
                              nil))
                            nil)
                           ("2" (rewrite "length_scal_vect")
                            (("2" (rewrite "length_row")
                              (("2"
                                (rewrite "length_row")
                                (("2"
                                  (typepred "i")
                                  (("2"
                                    (typepred "j")
                                    (("2"
                                      (expand "d_point1")
                                      (("2"
                                        (expand "d_point2")
                                        (("2"
                                          (flatten)
                                          (("2" (assertnil nil))
                                          nil))
                                        nil))
                                      nil))
                                    nil))
                                  nil))
                                nil))
                              nil))
                            nil))
                          nil))
                        nil))
                      nil))
                    nil))
                  nil))
                nil))
              nil))
            nil)
           ("2" (rewrite "length_add_vect_same")
            (("1" (rewrite "length_row")
              (("1" (typepred "i")
                (("1" (typepred "j")
                  (("1" (expand "d_point1")
                    (("1" (expand "d_point2")
                      (("1" (flatten) (("1" (assertnil nil)) nil))
                      nil))
                    nil))
                  nil))
                nil))
              nil)
             ("2" (rewrite "length_scal_vect")
              (("2" (rewrite "length_row")
                (("2" (rewrite "length_row")
                  (("2" (typepred "i")
                    (("2" (typepred "j")
                      (("2" (expand "d_point1")
                        (("2" (expand "d_point2")
                          (("2" (flatten) (("2" (assertnil nil))
                            nil))
                          nil))
                        nil))
                      nil))
                    nil))
                  nil))
                nil))
              nil))
            nil))
          nil)
         ("2" (rewrite "length_add_vect_same")
          (("1" (rewrite "length_row")
            (("1" (typepred "i")
              (("1" (typepred "j")
                (("1" (expand "d_point1")
                  (("1" (expand "d_point2")
                    (("1" (flatten) (("1" (assertnil nil)) nil))
                    nil))
                  nil))
                nil))
              nil))
            nil)
           ("2" (rewrite "length_scal_vect")
            (("2" (rewrite "length_row")
              (("2" (rewrite "length_row")
                (("2" (typepred "i")
                  (("2" (typepred "j")
                    (("2" (expand "d_point1")
                      (("2" (expand "d_point2")
                        (("2" (flatten) (("2" (assertnil nil)) nil))
                        nil))
                      nil))
                    nil))
                  nil))
                nil))
              nil))
            nil))
          nil))
        nil))
      nil))
    nil)
   ((columns_replace_row formula-decl nil matrix_props nil)
    (length_add_vect_same formula-decl nil matrices nil)
    (real_ge_is_total_order name-judgement "(total_order?[real])"
     real_props nil)
    (length_row formula-decl nil matrix_props nil)
    (length_scal_vect formula-decl nil matrices nil)
    (access_sum formula-decl nil matrices nil)
    (real_plus_real_is_real application-judgement "real" reals nil)
    (access_row formula-decl nil matrices nil)
    (real_le_is_total_order name-judgement "(total_order?[real])"
     real_props nil)
    (real_times_real_is_real application-judgement "real" reals nil)
    (access_scal formula-decl nil matrices nil)
    (NOT const-decl "[bool -> bool]" booleans nil)
    (entry_replace_row formula-decl nil matrix_props nil)
    (real_gt_is_strict_total_order name-judgement
     "(strict_total_order?[real])" real_props nil)
    (real_lt_is_strict_total_order name-judgement
     "(strict_total_order?[real])" real_props nil)
    (real_div_nzreal_is_real application-judgement "real" reals nil)
    (minus_real_is_real application-judgement "real" reals nil)
    (* const-decl "VectorN(length(v2))" matrices nil)
    (row const-decl "Vector" matrices nil)
    (+ const-decl "VectorN(max(length(v1), length(v2)))" matrices nil)
    (VectorN type-eq-decl nil matrices nil)
    (max const-decl "{p: real | p >= m AND p >= n}" real_defs nil)
    (Vector type-eq-decl nil matrices nil)
    (d_point1 const-decl "bool" matrix_diag nil)
    (d_point2 const-decl "bool" matrix_diag nil)
    (upper_triangular? const-decl "bool" matrix_det nil)
    (SquareMatrix type-eq-decl nil matrices nil)
    (posnat nonempty-type-eq-decl nil integers nil)
    (nonneg_int nonempty-type-eq-decl nil integers nil)
    (Square type-eq-decl nil matrices nil)
    (PosFullMatrix type-eq-decl nil matrices nil)
    (columns def-decl "{c: nat |
         (FORALL (i: below(length(M))): length(nth(M, i)) <= c) AND
          (null?(M) AND c = 0 OR
            (EXISTS (i: below(length(M))): length(nth(M, i)) = c))}"
             matrices nil)
    (<= const-decl "bool" reals nil)
    (rows const-decl "nat" matrices nil)
    (> const-decl "bool" reals nil)
    (FullMatrix type-eq-decl nil matrices nil)
    (nth def-decl "T" list_props nil)
    (below type-eq-decl nil nat_types nil)
    (= const-decl "[T, T -> boolean]" equalities nil)
    (below type-eq-decl nil naturalnumbers nil)
    (length def-decl "nat" list_props nil)
    (< const-decl "bool" reals nil)
    (nat nonempty-type-eq-decl nil naturalnumbers nil)
    (>= const-decl "bool" reals nil)
    (int nonempty-type-eq-decl nil integers nil)
    (integer_pred const-decl "[rational -> boolean]" integers nil)
    (rational nonempty-type-from-decl nil rationals nil)
    (rational_pred const-decl "[real -> boolean]" rationals nil)
    (null? adt-recognizer-decl "[list -> boolean]" list_adt nil)
    (real nonempty-type-from-decl nil reals nil)
    (OR const-decl "[bool, bool -> bool]" booleans nil)
    (Matrix type-eq-decl nil matrices nil)
    (real_pred const-decl "[number_field -> boolean]" reals nil)
    (number_field nonempty-type-from-decl nil number_fields nil)
    (number_field_pred const-decl "[number -> boolean]" number_fields
     nil)
    (AND const-decl "[bool, bool -> bool]" booleans nil)
    (every adt-def-decl "boolean" list_adt nil)
    (PRED type-eq-decl nil defined_types nil)
    (bool nonempty-type-eq-decl nil booleans nil)
    (boolean nonempty-type-decl nil booleans nil)
    (list type-decl nil list_adt nil)
    (number nonempty-type-decl nil numbers nil)
    (rows_replace_row formula-decl nil matrix_props nil))
   nil))
 (diagonalize_TCC14 0
  (diagonalize_TCC14-1 nil 3615559416
   ("" (skeep)
    (("" (skeep)
      (("" (rewrite "length_add_vect_same")
        (("1" (rewrite "length_row")
          (("1" (typepred "i")
            (("1" (typepred "j")
              (("1" (expand "d_point1")
                (("1" (expand "d_point2")
                  (("1" (flatten) (("1" (assertnil nil)) nil)) nil))
                nil))
              nil))
            nil))
          nil)
         ("2" (rewrite "length_scal_vect")
          (("2" (rewrite "length_row")
            (("2" (rewrite "length_row")
              (("2" (typepred "i")
                (("2" (typepred "j")
                  (("2" (expand "d_point1")
                    (("2" (expand "d_point2")
                      (("2" (flatten) (("2" (assertnil nil)) nil))
                      nil))
                    nil))
                  nil))
                nil))
              nil))
            nil))
          nil))
        nil))
      nil))
    nil)
   ((length_scal_vect formula-decl nil matrices nil)
    (length_row formula-decl nil matrix_props nil)
    (real_ge_is_total_order name-judgement "(total_order?[real])"
     real_props nil)
    (real_le_is_total_order name-judgement "(total_order?[real])"
     real_props nil)
    (real_lt_is_strict_total_order name-judgement
     "(strict_total_order?[real])" real_props nil)
    (NOT const-decl "[bool -> bool]" booleans nil)
    (real_div_nzreal_is_real application-judgement "real" reals nil)
    (minus_real_is_real application-judgement "real" reals nil)
    (* const-decl "VectorN(length(v2))" matrices nil)
    (VectorN type-eq-decl nil matrices nil)
    (d_point1 const-decl "bool" matrix_diag nil)
    (upper_triangular? const-decl "bool" matrix_det nil)
    (d_point2 const-decl "bool" matrix_diag nil)
    (FALSE const-decl "bool" booleans nil)
    (is_simple_prod? const-decl "bool" matrix_det nil)
    (SquareMatrix type-eq-decl nil matrices nil)
    (posnat nonempty-type-eq-decl nil integers nil)
    (nonneg_int nonempty-type-eq-decl nil integers nil)
    (Square type-eq-decl nil matrices nil)
    (PosFullMatrix type-eq-decl nil matrices nil)
    (columns def-decl "{c: nat |
         (FORALL (i: below(length(M))): length(nth(M, i)) <= c) AND
          (null?(M) AND c = 0 OR
            (EXISTS (i: below(length(M))): length(nth(M, i)) = c))}"
             matrices nil)
    (<= const-decl "bool" reals nil)
    (rows const-decl "nat" matrices nil)
    (> const-decl "bool" reals nil)
    (FullMatrix type-eq-decl nil matrices nil)
    (nth def-decl "T" list_props nil)
    (below type-eq-decl nil nat_types nil)
    (= const-decl "[T, T -> boolean]" equalities nil)
    (below type-eq-decl nil naturalnumbers nil)
    (length def-decl "nat" list_props nil)
    (< const-decl "bool" reals nil)
    (null? adt-recognizer-decl "[list -> boolean]" list_adt nil)
    (OR const-decl "[bool, bool -> bool]" booleans nil)
    (row const-decl "Vector" matrices nil)
    (nat nonempty-type-eq-decl nil naturalnumbers nil)
    (>= const-decl "bool" reals nil)
    (int nonempty-type-eq-decl nil integers nil)
    (integer_pred const-decl "[rational -> boolean]" integers nil)
    (rational nonempty-type-from-decl nil rationals nil)
    (rational_pred const-decl "[real -> boolean]" rationals nil)
    (real nonempty-type-from-decl nil reals nil)
    (Matrix type-eq-decl nil matrices nil)
    (Vector type-eq-decl nil matrices nil)
    (real_pred const-decl "[number_field -> boolean]" reals nil)
    (number_field nonempty-type-from-decl nil number_fields nil)
    (number_field_pred const-decl "[number -> boolean]" number_fields
     nil)
    (AND const-decl "[bool, bool -> bool]" booleans nil)
    (every adt-def-decl "boolean" list_adt nil)
    (PRED type-eq-decl nil defined_types nil)
    (bool nonempty-type-eq-decl nil booleans nil)
    (boolean nonempty-type-decl nil booleans nil)
    (list type-decl nil list_adt nil)
    (number nonempty-type-decl nil numbers nil)
    (length_add_vect_same formula-decl nil matrices nil))
   nil))
 (diagonalize_TCC15 0
  (diagonalize_TCC15-1 nil 3615559416
   ("" (skeep)
    (("" (case "i<pn anD j < pn AND i<j")
      (("1" (flatten)
        (("1" (skeep)
          (("1" (case "length(row(Q)(i) + pivnum*row(Q)(j)) = rows(S)")
            (("1" (rewrite "rows_replace_row")
              (("1" (assert)
                (("1" (rewrite "columns_replace_row")
                  (("1" (assert)
                    (("1" (lemma "mult_Easr_left")
                      (("1" (inst?)
                        (("1" (assert)
                          (("1" (inst?)
                            (("1" (assert)
                              (("1"
                                (replaces -1 :dir rl)
                                (("1"
                                  (rewrite "mult_simple_prod")
                                  (("1"
                                    (rewrite "Easr_simple_prod")
                                    nil
                                    nil))
                                  nil))
                                nil))
                              nil))
                            nil))
                          nil))
                        nil))
                      nil))
                    nil))
                  nil))
                nil))
              nil)
             ("2" (assert)
              (("2" (hide 7)
                (("2" (rewrite "length_add_vect")
                  (("2" (rewrite "length_scal_vect")
                    (("2" (rewrite "length_row")
                      (("2" (rewrite "length_row")
                        (("2" (expand "max") (("2" (assertnil nil))
                          nil))
                        nil))
                      nil))
                    nil))
                  nil))
                nil))
              nil))
            nil))
          nil))
        nil)
       ("2" (hide 7)
        (("2" (typepred "i")
          (("2" (typepred "j")
            (("2" (expand "d_point1")
              (("2" (expand "d_point2")
                (("2" (flatten) (("2" (assertnil nil)) nil)) nil))
              nil))
            nil))
          nil))
        nil))
      nil))
    nil)
   ((d_point1 const-decl "bool" matrix_diag nil)
    (upper_triangular? const-decl "bool" matrix_det nil)
    (SquareMatrix type-eq-decl nil matrices nil)
    (posnat nonempty-type-eq-decl nil integers nil)
    (nonneg_int nonempty-type-eq-decl nil integers nil)
    (d_point2 const-decl "bool" matrix_diag nil)
    (Square type-eq-decl nil matrices nil)
    (PosFullMatrix type-eq-decl nil matrices nil)
    (columns def-decl "{c: nat |
         (FORALL (i: below(length(M))): length(nth(M, i)) <= c) AND
          (null?(M) AND c = 0 OR
            (EXISTS (i: below(length(M))): length(nth(M, i)) = c))}"
             matrices nil)
    (<= const-decl "bool" reals nil)
    (rows const-decl "nat" matrices nil)
    (> const-decl "bool" reals nil)
    (FullMatrix type-eq-decl nil matrices nil)
    (nth def-decl "T" list_props nil)
    (below type-eq-decl nil nat_types nil)
    (= const-decl "[T, T -> boolean]" equalities nil)
    (below type-eq-decl nil naturalnumbers nil)
    (length def-decl "nat" list_props nil)
    (null? adt-recognizer-decl "[list -> boolean]" list_adt nil)
    (OR const-decl "[bool, bool -> bool]" booleans nil)
    (Matrix type-eq-decl nil matrices nil)
    (every adt-def-decl "boolean" list_adt nil)
    (PRED type-eq-decl nil defined_types nil)
    (list type-decl nil list_adt nil)
    (nat nonempty-type-eq-decl nil naturalnumbers nil)
    (>= const-decl "bool" reals nil)
    (int nonempty-type-eq-decl nil integers nil)
    (integer_pred const-decl "[rational -> boolean]" integers nil)
    (rational nonempty-type-from-decl nil rationals nil)
    (rational_pred const-decl "[real -> boolean]" rationals nil)
    (< const-decl "bool" reals nil)
    (real nonempty-type-from-decl nil reals nil)
    (real_pred const-decl "[number_field -> boolean]" reals nil)
    (number_field nonempty-type-from-decl nil number_fields nil)
    (number_field_pred const-decl "[number -> boolean]" number_fields
     nil)
    (number nonempty-type-decl nil numbers nil)
    (AND const-decl "[bool, bool -> bool]" booleans nil)
    (bool nonempty-type-eq-decl nil booleans nil)
    (boolean nonempty-type-decl nil booleans nil)
    (length_add_vect formula-decl nil matrices nil)
    (nonneg_rat_max application-judgement
     "{s: nonneg_rat | s >= q AND s >= r}" real_defs nil)
    (nat_max application-judgement "{k: nat | i <= k AND j <= k}"
     real_defs nil)
    (length_row formula-decl nil matrix_props nil)
    (real_ge_is_total_order name-judgement "(total_order?[real])"
     real_props nil)
    (length_scal_vect formula-decl nil matrices nil)
    (rows_replace_row formula-decl nil matrix_props nil)
    (minus_real_is_real application-judgement "real" reals nil)
    (columns_replace_row formula-decl nil matrix_props nil)
    (mult_Easr_left formula-decl nil matrix_det nil)
    (Easr const-decl "SquareMatrix(pn)" matrix_det nil)
    (mult_simple_prod formula-decl nil matrix_det nil)
    (mult_full application-judgement "FullMatrix" matrices nil)
    (Easr_simple_prod formula-decl nil matrix_det nil)
    (real_lt_is_strict_total_order name-judgement
     "(strict_total_order?[real])" real_props nil)
    (real_div_nzreal_is_real application-judgement "real" reals nil)
    (Vector type-eq-decl nil matrices nil)
    (max const-decl "{p: real | p >= m AND p >= n}" real_defs nil)
    (VectorN type-eq-decl nil matrices nil)
    (+ const-decl "VectorN(max(length(v1), length(v2)))" matrices nil)
    (row const-decl "Vector" matrices nil)
    (is_simple_prod? const-decl "bool" matrix_det nil)
    (FALSE const-decl "bool" booleans nil)
    (* const-decl "VectorN(length(v2))" matrices nil)
    (NOT const-decl "[bool -> bool]" booleans nil)
    (real_le_is_total_order name-judgement "(total_order?[real])"
     real_props nil))
   nil))
 (diagonalize_TCC16 0
  (diagonalize_TCC16-1 nil 3615559416
   ("" (skeep)
    (("" (skeep) (("" (rewrite "Id_simple_prod"nil nil)) nil)) nil)
   ((posnat nonempty-type-eq-decl nil integers nil)
    (> const-decl "bool" reals nil)
    (nonneg_int nonempty-type-eq-decl nil integers nil)
    (>= const-decl "bool" reals nil)
    (int nonempty-type-eq-decl nil integers nil)
    (integer_pred const-decl "[rational -> boolean]" integers nil)
    (rational nonempty-type-from-decl nil rationals nil)
    (rational_pred const-decl "[real -> boolean]" rationals nil)
    (real nonempty-type-from-decl nil reals nil)
    (real_pred const-decl "[number_field -> boolean]" reals nil)
    (number_field nonempty-type-from-decl nil number_fields nil)
    (number_field_pred const-decl "[number -> boolean]" number_fields
     nil)
    (number nonempty-type-decl nil numbers nil)
    (FALSE const-decl "bool" booleans nil)
    (bool nonempty-type-eq-decl nil booleans nil)
    (boolean nonempty-type-decl nil booleans nil)
    (Id_simple_prod formula-decl nil matrix_det nil))
   nil))
 (diagonalize_TCC17 0
  (diagonalize_TCC17-1 nil 3615559416
   ("" (skeep)
    (("" (assert)
      (("" (case "i<pn anD j < pn AND i<j")
        (("1" (flatten)
          (("1" (case "NOT (null?(R) OR null?(S) OR null?(Q))")
            (("1" (flatten)
              (("1" (assert)
                (("1" (skeep)
                  (("1"
                    (case "length(row(Q)(i) + pivnum*row(Q)(j)) = pn")
                    (("1" (assert)
                      (("1" (split 9)
                        (("1" (rewrite "mult_simple_prod")
                          (("1" (rewrite "Easr_simple_prod"nil nil))
                          nil)
                         ("2" (lemma "mult_Easr_left")
                          (("2" (inst - "Q" "i" "j" "pn" "pivnum")
                            (("2" (assert)
                              (("2"
                                (replaces -1 :dir rl)
                                (("2"
                                  (rewrite "matrix_mult_assoc")
                                  (("1"
                                    (rewrite
                                     "matrix_mult_assoc"
                                     :dir
                                     rl)
                                    (("1"
                                      (rewrite "mult_Easr_Easr_inv")
                                      (("1"
                                        (rewrite "mult_Id_left")
                                        (("1"
                                          (assert)
                                          (("1"
                                            (typepred "R")
                                            (("1" (assertnil nil))
                                            nil))
                                          nil))
                                        nil))
                                      nil)
                                     ("2"
                                      (rewrite "Easr_null")
                                      nil
                                      nil))
                                    nil)
                                   ("2" (rewrite "Easr_null"nil nil))
                                  nil))
                                nil))
                              nil))
                            nil))
                          nil)
                         ("3" (lemma "mult_Easr_left")
                          (("3" (inst - "Q" "i" "j" "pn" "pivnum")
                            (("3" (assert)
                              (("3"
                                (replaces -1 :dir rl)
                                (("3"
                                  (rewrite "matrix_mult_assoc")
                                  (("3"
                                    (rewrite
                                     "matrix_mult_assoc"
                                     :dir
                                     rl)
                                    (("3"
                                      (typepred "R")
                                      (("3"
                                        (assert)
                                        (("3"
                                          (flatten)
                                          (("3"
                                            (replace -9)
                                            (("3"
                                              (rewrite "mult_Id_left")
                                              (("3"
                                                (rewrite
                                                 "mult_Easr_Easr_inv")
                                                nil
                                                nil))
                                              nil))
                                            nil))
                                          nil))
                                        nil))
                                      nil))
                                    nil))
                                  nil))
                                nil))
                              nil))
                            nil))
                          nil)
                         ("4" (rewrite "rows_mult")
                          (("4" (assertnil nil)) nil)
                         ("5" (rewrite "rows_mult")
                          (("5" (rewrite "columns_mult")
                            (("5" (assertnil nil)) nil))
                          nil)
                         ("6" (rewrite "rows_mult")
                          (("6" (assertnil nil)) nil)
                         ("7" (rewrite "columns_mult")
                          (("7" (assertnil nil)) nil))
                        nil))
                      nil)
                     ("2" (hide 10)
                      (("2" (rewrite "length_add_vect")
                        (("2" (rewrite "length_scal_vect")
                          (("2" (rewrite "length_row")
                            (("2" (rewrite "length_row")
                              (("2"
                                (expand "max")
                                (("2" (assertnil nil))
                                nil))
                              nil))
                            nil))
                          nil))
                        nil))
                      nil))
                    nil))
                  nil))
                nil))
              nil)
             ("2" (hide 6)
              (("2" (label "igz" -1)
                (("2" (typepred "R")
                  (("2" (typepred "S")
                    (("2" (typepred "Q")
                      (("2" (expand "rows")
                        (("2" (expand "length")
                          (("2" (split "igz")
                            (("1" (assertnil nil)
                             ("2" (assertnil nil)
                             ("3" (assertnil nil))
                            nil))
                          nil))
                        nil))
                      nil))
                    nil))
                  nil))
                nil))
              nil))
            nil))
          nil)
         ("2" (hide 7)
          (("2" (typepred "i")
            (("2" (typepred "j")
              (("2" (expand "d_point2")
                (("2" (expand "d_point1")
                  (("2" (flatten) (("2" (assertnil nil)) nil)) nil))
                nil))
              nil))
            nil))
          nil))
        nil))
      nil))
    nil)
   ((mult_full application-judgement "FullMatrix" matrices nil)
    (minus_real_is_real application-judgement "real" reals nil)
    (real_le_is_total_order name-judgement "(total_order?[real])"
     real_props nil)
    (length_scal_vect formula-decl nil matrices nil)
    (real_ge_is_total_order name-judgement "(total_order?[real])"
     real_props nil)
    (length_row formula-decl nil matrix_props nil)
    (nat_max application-judgement "{k: nat | i <= k AND j <= k}"
     real_defs nil)
    (nonneg_rat_max application-judgement
     "{s: nonneg_rat | s >= q AND s >= r}" real_defs nil)
    (length_add_vect formula-decl nil matrices nil)
    (real_div_nzreal_is_real application-judgement "real" reals nil)
    (columns_mult formula-decl nil matrices nil)
    (rows_mult formula-decl nil matrices nil)
    (mult_Easr_left formula-decl nil matrix_det nil)
    (matrix_mult_assoc formula-decl nil matrices nil)
    (Easr_null formula-decl nil matrix_det nil)
    (mult_Easr_Easr_inv formula-decl nil matrix_det nil)
    (real_gt_is_strict_total_order name-judgement
     "(strict_total_order?[real])" real_props nil)
    (mult_Id_left formula-decl nil matrices nil)
    (- const-decl "[numfield -> numfield]" number_fields nil)
    (numfield nonempty-type-eq-decl nil number_fields nil)
    (Easr const-decl "SquareMatrix(pn)" matrix_det nil)
    (mult_simple_prod formula-decl nil matrix_det nil)
    (Easr_simple_prod formula-decl nil matrix_det nil)
    (* const-decl "VectorN(length(v2))" matrices nil)
    (+ const-decl "VectorN(max(length(v1), length(v2)))" matrices nil)
    (max const-decl "{p: real | p >= m AND p >= n}" real_defs nil)
    (real_lt_is_strict_total_order name-judgement
     "(strict_total_order?[real])" real_props nil)
    (NOT const-decl "[bool -> bool]" booleans nil)
    (is_simple_prod? const-decl "bool" matrix_det nil)
    (FALSE const-decl "bool" booleans nil)
    (IMPLIES const-decl "[bool, bool -> bool]" booleans nil)
    (MatrixMN type-eq-decl nil matrices nil)
    (entry const-decl "real" matrices nil)
    (Vector type-eq-decl nil matrices nil)
    (* const-decl "real" matrices nil)
    (row const-decl "Vector" matrices nil)
    (VectorN type-eq-decl nil matrices nil)
    (col def-decl "VectorN(rows(M))" matrices nil)
    (* const-decl "{A: MatrixMN(rows(M), columns(N)) |
         FORALL (i, j): entry(A)(i, j) = row(M)(i) * col(N)(j)}"
       matrices nil)
    (IF const-decl "[boolean, T, T -> T]" if_def nil)
    (Id const-decl "{M: SquareMatrix(pm) |
         (FORALL (i, j):
            entry(M)(i, j) = IF i < pm AND i = j THEN 1 ELSE 0 ENDIF)
          AND
          (FORALL (pn: posnat, N: MatrixMN(pm, pn)): M * N = N) AND
           (FORALL (pn: posnat, N: MatrixMN(pn, pm)): N * M = N)}"
     matrices nil)
    (boolean nonempty-type-decl nil booleans nil)
    (bool nonempty-type-eq-decl nil booleans nil)
    (AND const-decl "[bool, bool -> bool]" booleans nil)
    (number nonempty-type-decl nil numbers nil)
    (number_field_pred const-decl "[number -> boolean]" number_fields
     nil)
    (number_field nonempty-type-from-decl nil number_fields nil)
    (real_pred const-decl "[number_field -> boolean]" reals nil)
    (real nonempty-type-from-decl nil reals nil)
    (< const-decl "bool" reals nil)
    (rational_pred const-decl "[real -> boolean]" rationals nil)
    (rational nonempty-type-from-decl nil rationals nil)
    (integer_pred const-decl "[rational -> boolean]" integers nil)
    (int nonempty-type-eq-decl nil integers nil)
    (>= const-decl "bool" reals nil)
    (nat nonempty-type-eq-decl nil naturalnumbers nil)
    (list type-decl nil list_adt nil)
    (PRED type-eq-decl nil defined_types nil)
    (every adt-def-decl "boolean" list_adt nil)
    (Matrix type-eq-decl nil matrices nil)
    (OR const-decl "[bool, bool -> bool]" booleans nil)
    (null? adt-recognizer-decl "[list -> boolean]" list_adt nil)
    (length def-decl "nat" list_props nil)
    (below type-eq-decl nil naturalnumbers nil)
    (= const-decl "[T, T -> boolean]" equalities nil)
    (below type-eq-decl nil nat_types nil)
    (nth def-decl "T" list_props nil)
    (FullMatrix type-eq-decl nil matrices nil)
    (> const-decl "bool" reals nil)
    (rows const-decl "nat" matrices nil)
    (<= const-decl "bool" reals nil)
    (columns def-decl "{c: nat |
         (FORALL (i: below(length(M))): length(nth(M, i)) <= c) AND
          (null?(M) AND c = 0 OR
            (EXISTS (i: below(length(M))): length(nth(M, i)) = c))}"
             matrices nil)
    (PosFullMatrix type-eq-decl nil matrices nil)
    (Square type-eq-decl nil matrices nil)
    (d_point2 const-decl "bool" matrix_diag nil)
    (nonneg_int nonempty-type-eq-decl nil integers nil)
    (posnat nonempty-type-eq-decl nil integers nil)
    (SquareMatrix type-eq-decl nil matrices nil)
    (upper_triangular? const-decl "bool" matrix_det nil)
    (d_point1 const-decl "bool" matrix_diag nil))
   nil))
 (diagonalize_TCC18 0
  (diagonalize_TCC18-1 nil 3615559416
   ("" (skeep)
    (("" (skeep)
      (("" (replace 6) (("" (rewrite "Id_simple_prod"nil nil)) nil))
      nil))
    nil)
   ((Id_simple_prod formula-decl nil matrix_det nil)
    (boolean nonempty-type-decl nil booleans nil)
    (bool nonempty-type-eq-decl nil booleans nil)
    (FALSE const-decl "bool" booleans nil)
    (number nonempty-type-decl nil numbers nil)
    (number_field_pred const-decl "[number -> boolean]" number_fields
     nil)
    (number_field nonempty-type-from-decl nil number_fields nil)
    (real_pred const-decl "[number_field -> boolean]" reals nil)
    (real nonempty-type-from-decl nil reals nil)
    (rational_pred const-decl "[real -> boolean]" rationals nil)
    (rational nonempty-type-from-decl nil rationals nil)
    (integer_pred const-decl "[rational -> boolean]" integers nil)
    (int nonempty-type-eq-decl nil integers nil)
    (>= const-decl "bool" reals nil)
    (nonneg_int nonempty-type-eq-decl nil integers nil)
    (> const-decl "bool" reals nil)
    (posnat nonempty-type-eq-decl nil integers nil))
   nil))
 (diagonalize_TCC19 0
  (diagonalize_TCC19-1 nil 3615559416
   ("" (skeep)
    (("" (skeep)
      (("" (assert)
        (("" (split 6)
          (("1" (flatten)
            (("1" (assert)
              (("1" (lemma "mult_Easr_left")
                (("1" (inst-cp - "Q" "i" "j" "pn" "pivnum")
                  (("1" (inst - "S" "i" "j" "pn" "pivnum")
                    (("1" (assert)
                      (("1" (case "i < pn AND j < pn")
                        (("1" (flatten)
                          (("1" (assert)
                            (("1" (replaces -3 :dir rl)
                              (("1"
                                (replaces -3 :dir rl)
                                (("1"
                                  (rewrite "matrix_mult_assoc")
                                  (("1"
                                    (typepred "T")
                                    (("1" (assertnil nil))
                                    nil)
                                   ("2"
                                    (typepred "Q")
                                    (("2"
                                      (expand "rows")
                                      (("2"
                                        (expand "length")
                                        (("2" (assertnil nil))
                                        nil))
                                      nil))
                                    nil))
                                  nil))
                                nil))
                              nil))
                            nil))
                          nil)
                         ("2" (typepred "i")
                          (("2" (typepred "j")
                            (("2" (expand "d_point1")
                              (("2"
                                (expand "d_point2")
                                (("2"
                                  (flatten)
                                  (("2" (assertnil nil))
                                  nil))
                                nil))
                              nil))
                            nil))
                          nil))
                        nil))
                      nil))
                    nil))
                  nil))
                nil))
              nil))
            nil)
           ("2" (skosimp*)
            (("2" (rewrite "entry_replace_row")
              (("1" (lift-if)
                (("1" (split 1)
                  (("1" (flatten)
                    (("1" (rewrite "access_sum")
                      (("1" (rewrite "access_scal")
                        (("1" (assert)
                          (("1" (typepred "T")
                            (("1" (inst-cp - "i!1")
                              (("1"
                                (assert)
                                (("1"
                                  (rewrite "access_row")
                                  (("1"
                                    (rewrite "access_row")
                                    (("1"
                                      (assert)
                                      (("1"
                                        (typepred "S")
                                        (("1"
                                          (expand "upper_triangular?")
                                          (("1"
                                            (inst - "j" "i!1")
                                            (("1"
                                              (assert)
                                              (("1"
                                                (typepred "i")
                                                (("1"
                                                  (expand "d_point2")
                                                  (("1"
                                                    (flatten)
                                                    (("1"
                                                      (assert)
                                                      (("1"
                                                        (case
                                                         "j < rows(S)")
                                                        (("1"
                                                          (assert)
                                                          (("1"
                                                            (assert)
                                                            nil
                                                            nil))
                                                          nil)
                                                         ("2"
                                                          (hide-all-but
                                                           1)
                                                          (("2"
                                                            (typepred
                                                             "j")
                                                            (("2"
                                                              (expand
                                                               "d_point1")
                                                              (("2"
                                                                (ground)
                                                                nil
                                                                nil))
                                                              nil))
                                                            nil))
                                                          nil))
                                                        nil))
                                                      nil))
                                                    nil))
                                                  nil))
                                                nil))
                                              nil))
                                            nil))
                                          nil))
                                        nil))
                                      nil))
                                    nil))
                                  nil))
                                nil))
                              nil))
                            nil))
                          nil))
                        nil))
                      nil))
                    nil)
                   ("2" (flatten)
                    (("2" (typepred "T")
                      (("2" (inst - "i!1") (("2" (assertnil nil))
                        nil))
                      nil))
                    nil))
                  nil))
                nil)
               ("2" (rewrite "length_add_vect_same")
                (("1" (rewrite "length_row")
                  (("1" (typepred "i")
                    (("1" (typepred "j")
                      (("1" (expand "d_point1")
                        (("1" (expand "d_point2")
                          (("1" (flatten) (("1" (assertnil nil))
                            nil))
                          nil))
                        nil))
                      nil))
                    nil))
                  nil)
                 ("2" (rewrite "length_scal_vect")
                  (("2" (rewrite "length_row")
                    (("2" (rewrite "length_row")
                      (("2" (typepred "i")
                        (("2" (typepred "j")
                          (("2" (expand "d_point1")
                            (("2" (expand "d_point2")
                              (("2"
                                (flatten)
                                (("2" (assertnil nil))
                                nil))
                              nil))
                            nil))
                          nil))
                        nil))
                      nil))
                    nil))
                  nil))
                nil))
              nil))
            nil))
          nil))
        nil))
      nil))
    nil)
   ((mult_full application-judgement "FullMatrix" matrices nil)
    (number nonempty-type-decl nil numbers nil)
    (list type-decl nil list_adt nil)
    (boolean nonempty-type-decl nil booleans nil)
    (bool nonempty-type-eq-decl nil booleans nil)
    (PRED type-eq-decl nil defined_types nil)
    (every adt-def-decl "boolean" list_adt nil)
    (AND const-decl "[bool, bool -> bool]" booleans nil)
    (number_field_pred const-decl "[number -> boolean]" number_fields
     nil)
    (number_field nonempty-type-from-decl nil number_fields nil)
    (real_pred const-decl "[number_field -> boolean]" reals nil)
    (Matrix type-eq-decl nil matrices nil)
    (OR const-decl "[bool, bool -> bool]" booleans nil)
    (real nonempty-type-from-decl nil reals nil)
    (null? adt-recognizer-decl "[list -> boolean]" list_adt nil)
    (rational_pred const-decl "[real -> boolean]" rationals nil)
    (rational nonempty-type-from-decl nil rationals nil)
    (integer_pred const-decl "[rational -> boolean]" integers nil)
    (int nonempty-type-eq-decl nil integers nil)
    (>= const-decl "bool" reals nil)
    (nat nonempty-type-eq-decl nil naturalnumbers nil)
    (< const-decl "bool" reals nil)
    (length def-decl "nat" list_props nil)
    (below type-eq-decl nil naturalnumbers nil)
    (= const-decl "[T, T -> boolean]" equalities nil)
    (below type-eq-decl nil nat_types nil)
    (nth def-decl "T" list_props nil)
    (FullMatrix type-eq-decl nil matrices nil)
    (> const-decl "bool" reals nil)
    (rows const-decl "nat" matrices nil)
    (<= const-decl "bool" reals nil)
    (columns def-decl "{c: nat |
         (FORALL (i: below(length(M))): length(nth(M, i)) <= c) AND
          (null?(M) AND c = 0 OR
            (EXISTS (i: below(length(M))): length(nth(M, i)) = c))}"
             matrices nil)
    (PosFullMatrix type-eq-decl nil matrices nil)
    (Square type-eq-decl nil matrices nil)
    (nonneg_int nonempty-type-eq-decl nil integers nil)
    (posnat nonempty-type-eq-decl nil integers nil)
    (SquareMatrix type-eq-decl nil matrices nil)
    (is_simple_prod? const-decl "bool" matrix_det nil)
    (FALSE const-decl "bool" booleans nil)
    (d_point2 const-decl "bool" matrix_diag nil)
    (upper_triangular? const-decl "bool" matrix_det nil)
    (d_point1 const-decl "bool" matrix_diag nil)
    (real_lt_is_strict_total_order name-judgement
     "(strict_total_order?[real])" real_props nil)
    (real_le_is_total_order name-judgement "(total_order?[real])"
     real_props nil)
    (matrix_mult_assoc formula-decl nil matrices nil)
    (IMPLIES const-decl "[bool, bool -> bool]" booleans nil)
    (MatrixMN type-eq-decl nil matrices nil)
    (entry const-decl "real" matrices nil)
    (Vector type-eq-decl nil matrices nil)
    (* const-decl "real" matrices nil)
    (row const-decl "Vector" matrices nil)
    (VectorN type-eq-decl nil matrices nil)
    (col def-decl "VectorN(rows(M))" matrices nil)
    (* const-decl "{A: MatrixMN(rows(M), columns(N)) |
         FORALL (i, j): entry(A)(i, j) = row(M)(i) * col(N)(j)}"
       matrices nil)
    (Easr const-decl "SquareMatrix(pn)" matrix_det nil)
    (real_gt_is_strict_total_order name-judgement
     "(strict_total_order?[real])" real_props nil)
    (NOT const-decl "[bool -> bool]" booleans nil)
    (mult_Easr_left formula-decl nil matrix_det nil)
    (entry_replace_row formula-decl nil matrix_props nil)
    (max const-decl "{p: real | p >= m AND p >= n}" real_defs nil)
    (+ const-decl "VectorN(max(length(v1), length(v2)))" matrices nil)
    (* const-decl "VectorN(length(v2))" matrices nil)
    (access_sum formula-decl nil matrices nil)
    (real_plus_real_is_real application-judgement "real" reals nil)
    (access_row formula-decl nil matrices nil)
    (real_times_real_is_real application-judgement "real" reals nil)
    (access_scal formula-decl nil matrices nil)
    (length_scal_vect formula-decl nil matrices nil)
    (length_row formula-decl nil matrix_props nil)
    (real_ge_is_total_order name-judgement "(total_order?[real])"
     real_props nil)
    (length_add_vect_same formula-decl nil matrices nil)
    (real_div_nzreal_is_real application-judgement "real" reals nil)
    (minus_real_is_real application-judgement "real" reals nil))
   nil))
 (diagonalize_TCC20 0
  (diagonalize_TCC20-1 nil 3615559416
   ("" (skeep)
    (("" (assert)
      (("" (skeep)
        (("" (typepred "j")
          (("" (expand "d_point1")
            (("" (assert)
              (("" (flatten)
                (("" (assert)
                  (("" (skeep)
                    (("" (rewrite "entry_replace_row")
                      (("1" (rewrite "entry_replace_row")
                        (("1" (lift-if)
                          (("1" (split 6)
                            (("1" (assert)
                              (("1"
                                (flatten)
                                (("1"
                                  (assert)
                                  (("1"
                                    (rewrite "access_sum")
                                    (("1"
                                      (rewrite "access_scal")
                                      (("1"
                                        (rewrite "access_row")
                                        (("1"
                                          (rewrite "access_row")
                                          (("1"
                                            (inst - "k!1" "p")
                                            (("1"
                                              (assert)
                                              (("1"
                                                (replace -2)
                                                (("1"
                                                  (replace -4)
                                                  (("1"
                                                    (assert)
                                                    (("1"
                                                      (typepred "i")
                                                      (("1"
                                                        (expand
                                                         "d_point2")
                                                        (("1"
                                                          (propax)
                                                          nil
                                                          nil))
                                                        nil))
                                                      nil))
                                                    nil))
                                                  nil))
                                                nil))
                                              nil))
                                            nil))
                                          nil))
                                        nil))
                                      nil))
                                    nil))
                                  nil))
                                nil))
                              nil)
                             ("2" (flatten)
                              (("2"
                                (assert)
                                (("2"
                                  (split 8)
                                  (("1"
                                    (flatten)
                                    (("1"
                                      (replace -1)
                                      (("1"
                                        (assert)
                                        (("1"
                                          (rewrite "access_sum")
                                          (("1"
                                            (rewrite "access_scal")
                                            (("1"
                                              (rewrite "access_row")
                                              (("1"
                                                (rewrite "access_row")
                                                (("1"
                                                  (assert)
                                                  (("1"
                                                    (inst - "i" "p")
                                                    (("1"
                                                      (assert)
                                                      (("1"
                                                        (replace -3)
                                                        (("1"
                                                          (assert)
                                                          (("1"
                                                            (typepred
                                                             "j")
                                                            (("1"
                                                              (expand
                                                               "d_point1")
                                                              (("1"
                                                                (inst
                                                                 -
                                                                 "j"
                                                                 "p")
                                                                (("1"
                                                                  (assert)
                                                                  (("1"
                                                                    (assert)
                                                                    nil
                                                                    nil))
                                                                  nil))
                                                                nil))
                                                              nil))
                                                            nil))
                                                          nil))
                                                        nil))
                                                      nil))
                                                    nil))
                                                  nil))
                                                nil))
                                              nil))
                                            nil))
                                          nil))
                                        nil))
                                      nil))
                                    nil)
                                   ("2"
                                    (flatten)
                                    (("2"
                                      (typepred "j")
                                      (("2"
                                        (expand "d_point1")
                                        (("2"
                                          (inst - "k!1" "p")
                                          (("2" (assertnil nil))
                                          nil))
                                        nil))
                                      nil))
                                    nil))
                                  nil))
                                nil))
                              nil))
                            nil))
                          nil)
                         ("2" (rewrite "length_add_vect_same")
                          (("1" (rewrite "length_row")
                            (("1" (typepred "i")
                              (("1"
                                (typepred "j")
                                (("1"
                                  (expand "d_point1")
                                  (("1"
                                    (expand "d_point2")
                                    (("1"
                                      (flatten)
                                      (("1" (assertnil nil))
                                      nil))
                                    nil))
                                  nil))
                                nil))
                              nil))
                            nil)
                           ("2" (rewrite "length_scal_vect")
                            (("2" (rewrite "length_row")
                              (("2"
                                (rewrite "length_row")
                                (("2"
                                  (typepred "i")
                                  (("2"
                                    (typepred "j")
                                    (("2"
                                      (expand "d_point1")
                                      (("2"
                                        (expand "d_point2")
                                        (("2"
                                          (flatten)
                                          (("2" (assertnil nil))
                                          nil))
                                        nil))
                                      nil))
                                    nil))
                                  nil))
                                nil))
                              nil))
                            nil))
                          nil))
                        nil)
                       ("2" (rewrite "length_add_vect_same")
                        (("1" (rewrite "length_row")
                          (("1" (typepred "i")
                            (("1" (typepred "j")
                              (("1"
                                (expand "d_point1")
                                (("1"
                                  (expand "d_point2")
                                  (("1"
                                    (flatten)
                                    (("1" (assertnil nil))
                                    nil))
                                  nil))
                                nil))
                              nil))
                            nil))
                          nil)
                         ("2" (rewrite "length_scal_vect")
                          (("2" (rewrite "length_row")
                            (("2" (rewrite "length_row")
                              (("2"
                                (typepred "i")
                                (("2"
                                  (typepred "j")
                                  (("2"
                                    (expand "d_point1")
                                    (("2"
                                      (expand "d_point2")
                                      (("2"
                                        (flatten)
                                        (("2" (assertnil nil))
                                        nil))
                                      nil))
                                    nil))
                                  nil))
                                nil))
                              nil))
                            nil))
                          nil))
                        nil))
                      nil))
                    nil))
                  nil))
                nil))
              nil))
            nil))
          nil))
        nil))
      nil))
    nil)
   ((minus_real_is_real application-judgement "real" reals nil)
    (upper_triangular? const-decl "bool" matrix_det nil)
    (SquareMatrix type-eq-decl nil matrices nil)
    (posnat nonempty-type-eq-decl nil integers nil)
    (nonneg_int nonempty-type-eq-decl nil integers nil)
    (d_point1 const-decl "bool" matrix_diag nil)
    (Square type-eq-decl nil matrices nil)
    (PosFullMatrix type-eq-decl nil matrices nil)
    (columns def-decl "{c: nat |
         (FORALL (i: below(length(M))): length(nth(M, i)) <= c) AND
          (null?(M) AND c = 0 OR
            (EXISTS (i: below(length(M))): length(nth(M, i)) = c))}"
             matrices nil)
    (<= const-decl "bool" reals nil)
    (rows const-decl "nat" matrices nil)
    (> const-decl "bool" reals nil)
    (FullMatrix type-eq-decl nil matrices nil)
    (nth def-decl "T" list_props nil)
    (below type-eq-decl nil nat_types nil)
    (= const-decl "[T, T -> boolean]" equalities nil)
    (below type-eq-decl nil naturalnumbers nil)
    (length def-decl "nat" list_props nil)
    (< const-decl "bool" reals nil)
    (nat nonempty-type-eq-decl nil naturalnumbers nil)
    (>= const-decl "bool" reals nil)
    (int nonempty-type-eq-decl nil integers nil)
    (integer_pred const-decl "[rational -> boolean]" integers nil)
    (rational nonempty-type-from-decl nil rationals nil)
    (rational_pred const-decl "[real -> boolean]" rationals nil)
    (null? adt-recognizer-decl "[list -> boolean]" list_adt nil)
    (real nonempty-type-from-decl nil reals nil)
    (OR const-decl "[bool, bool -> bool]" booleans nil)
    (Matrix type-eq-decl nil matrices nil)
    (real_pred const-decl "[number_field -> boolean]" reals nil)
    (number_field nonempty-type-from-decl nil number_fields nil)
    (number_field_pred const-decl "[number -> boolean]" number_fields
     nil)
    (AND const-decl "[bool, bool -> bool]" booleans nil)
    (every adt-def-decl "boolean" list_adt nil)
    (PRED type-eq-decl nil defined_types nil)
    (list type-decl nil list_adt nil)
    (number nonempty-type-decl nil numbers nil)
    (NOT const-decl "[bool -> bool]" booleans nil)
    (bool nonempty-type-eq-decl nil booleans nil)
    (boolean nonempty-type-decl nil booleans nil)
    (real_lt_is_strict_total_order name-judgement
     "(strict_total_order?[real])" real_props nil)
    (real_div_nzreal_is_real application-judgement "real" reals nil)
    (entry_replace_row formula-decl nil matrix_props nil)
    (d_point2 const-decl "bool" matrix_diag nil)
    (Vector type-eq-decl nil matrices nil)
    (max const-decl "{p: real | p >= m AND p >= n}" real_defs nil)
    (VectorN type-eq-decl nil matrices nil)
    (+ const-decl "VectorN(max(length(v1), length(v2)))" matrices nil)
    (row const-decl "Vector" matrices nil)
    (* const-decl "VectorN(length(v2))" matrices nil)
    (real_gt_is_strict_total_order name-judgement
     "(strict_total_order?[real])" real_props nil)
    (length_add_vect_same formula-decl nil matrices nil)
    (real_le_is_total_order name-judgement "(total_order?[real])"
     real_props nil)
    (real_ge_is_total_order name-judgement "(total_order?[real])"
     real_props nil)
    (length_row formula-decl nil matrix_props nil)
    (length_scal_vect formula-decl nil matrices nil)
    (access_scal formula-decl nil matrices nil)
    (real_times_real_is_real application-judgement "real" reals nil)
    (access_row formula-decl nil matrices nil)
    (real_plus_real_is_real application-judgement "real" reals nil)
    (access_sum formula-decl nil matrices nil))
   nil))
 (diagonalize_TCC21 0
  (diagonalize_TCC21-1 nil 3615559416
   ("" (skeep)
    (("" (skeep)
      (("" (typepred "i")
        (("" (expand "d_point2")
          (("" (flatten)
            (("" (assert)
              (("" (assert)
                (("" (case "NOT j < pn")
                  (("1" (typepred "j")
                    (("1" (expand "d_point1")
                      (("1" (flatten) (("1" (assertnil nil)) nil))
                      nil))
                    nil)
                   ("2" (split 6)
                    (("1" (rewrite "rows_replace_row")
                      (("1" (assertnil nil)) nil)
                     ("2" (skeep)
                      (("2" (case "NOT k!1 = i")
                        (("1" (inst - "k!1")
                          (("1" (assert)
                            (("1" (rewrite "entry_replace_row")
                              (("1"
                                (rewrite "entry_replace_row" 3)
                                (("1"
                                  (rewrite "length_add_vect_same" 1)
                                  (("1" (rewrite "length_row"nil nil)
                                   ("2"
                                    (rewrite "length_scal_vect" 1)
                                    (("2"
                                      (rewrite "length_row")
                                      (("2"
                                        (rewrite "length_row")
                                        nil
                                        nil))
                                      nil))
                                    nil))
                                  nil))
                                nil)
                               ("2"
                                (rewrite "length_add_vect_same" 1)
                                (("1" (rewrite "length_row"nil nil)
                                 ("2"
                                  (rewrite "length_scal_vect" 1)
                                  (("2"
                                    (rewrite "length_row")
                                    (("2"
                                      (rewrite "length_row")
                                      nil
                                      nil))
                                    nil))
                                  nil))
                                nil))
                              nil))
                            nil))
                          nil)
                         ("2" (assert)
                          (("2" (replace -1)
                            (("2" (assert)
                              (("2"
                                (rewrite "entry_replace_row" 1)
                                (("1"
                                  (rewrite "entry_replace_row" 2)
                                  (("1"
                                    (rewrite "access_sum")
                                    (("1"
                                      (rewrite "access_scal")
                                      (("1"
                                        (rewrite "access_row")
                                        (("1"
                                          (rewrite "access_row")
                                          (("1" (assertnil nil))
                                          nil))
                                        nil))
                                      nil))
                                    nil)
                                   ("2"
                                    (rewrite "length_add_vect_same" 1)
                                    (("1"
                                      (rewrite "length_row")
                                      nil
                                      nil)
                                     ("2"
                                      (rewrite "length_scal_vect" 1)
                                      (("2"
                                        (rewrite "length_row")
                                        (("2"
                                          (rewrite "length_row")
                                          nil
                                          nil))
                                        nil))
                                      nil))
                                    nil))
                                  nil)
                                 ("2"
                                  (rewrite "length_add_vect_same" 1)
                                  (("1" (rewrite "length_row"nil nil)
                                   ("2"
                                    (rewrite "length_scal_vect" 1)
                                    (("2"
                                      (rewrite "length_row")
                                      (("2"
                                        (rewrite "length_row")
                                        nil
                                        nil))
                                      nil))
                                    nil))
                                  nil))
                                nil))
                              nil))
                            nil))
                          nil))
                        nil))
                      nil))
                    nil))
                  nil))
                nil))
              nil))
            nil))
          nil))
        nil))
      nil))
    nil)
   ((posint_plus_nnint_is_posint application-judgement "posint"
     integers nil)
    (minus_real_is_real application-judgement "real" reals nil)
    (real_div_nzreal_is_real application-judgement "real" reals nil)
    (real_le_is_total_order name-judgement "(total_order?[real])"
     real_props nil)
    (real_lt_is_strict_total_order name-judgement
     "(strict_total_order?[real])" real_props nil)
    (access_scal formula-decl nil matrices nil)
    (real_times_real_is_real application-judgement "real" reals nil)
    (access_row formula-decl nil matrices nil)
    (real_plus_real_is_real application-judgement "real" reals nil)
    (access_sum formula-decl nil matrices nil)
    (entry_replace_row formula-decl nil matrix_props nil)
    (length_add_vect_same formula-decl nil matrices nil)
    (length_row formula-decl nil matrix_props nil)
    (real_ge_is_total_order name-judgement "(total_order?[real])"
     real_props nil)
    (length_scal_vect formula-decl nil matrices nil)
    (rows_replace_row formula-decl nil matrix_props nil)
    (Vector type-eq-decl nil matrices nil)
    (max const-decl "{p: real | p >= m AND p >= n}" real_defs nil)
    (VectorN type-eq-decl nil matrices nil)
    (+ const-decl "VectorN(max(length(v1), length(v2)))" matrices nil)
    (row const-decl "Vector" matrices nil)
    (* const-decl "VectorN(length(v2))" matrices nil)
    (boolean nonempty-type-decl nil booleans nil)
    (bool nonempty-type-eq-decl nil booleans nil)
    (NOT const-decl "[bool -> bool]" booleans nil)
    (number nonempty-type-decl nil numbers nil)
    (list type-decl nil list_adt nil)
    (PRED type-eq-decl nil defined_types nil)
    (every adt-def-decl "boolean" list_adt nil)
    (AND const-decl "[bool, bool -> bool]" booleans nil)
    (number_field_pred const-decl "[number -> boolean]" number_fields
     nil)
    (number_field nonempty-type-from-decl nil number_fields nil)
    (real_pred const-decl "[number_field -> boolean]" reals nil)
    (Matrix type-eq-decl nil matrices nil)
    (OR const-decl "[bool, bool -> bool]" booleans nil)
    (real nonempty-type-from-decl nil reals nil)
    (null? adt-recognizer-decl "[list -> boolean]" list_adt nil)
    (rational_pred const-decl "[real -> boolean]" rationals nil)
    (rational nonempty-type-from-decl nil rationals nil)
    (integer_pred const-decl "[rational -> boolean]" integers nil)
    (int nonempty-type-eq-decl nil integers nil)
    (>= const-decl "bool" reals nil)
    (nat nonempty-type-eq-decl nil naturalnumbers nil)
    (< const-decl "bool" reals nil)
    (length def-decl "nat" list_props nil)
    (below type-eq-decl nil naturalnumbers nil)
    (= const-decl "[T, T -> boolean]" equalities nil)
    (below type-eq-decl nil nat_types nil)
    (nth def-decl "T" list_props nil)
    (FullMatrix type-eq-decl nil matrices nil)
    (> const-decl "bool" reals nil)
    (rows const-decl "nat" matrices nil)
    (<= const-decl "bool" reals nil)
    (columns def-decl "{c: nat |
         (FORALL (i: below(length(M))): length(nth(M, i)) <= c) AND
          (null?(M) AND c = 0 OR
            (EXISTS (i: below(length(M))): length(nth(M, i)) = c))}"
             matrices nil)
    (PosFullMatrix type-eq-decl nil matrices nil)
    (Square type-eq-decl nil matrices nil)
    (d_point2 const-decl "bool" matrix_diag nil)
    (nonneg_int nonempty-type-eq-decl nil integers nil)
    (posnat nonempty-type-eq-decl nil integers nil)
    (SquareMatrix type-eq-decl nil matrices nil)
    (upper_triangular? const-decl "bool" matrix_det nil)
    (d_point1 const-decl "bool" matrix_diag nil))
   nil))
 (diagonalize_TCC22 0
  (diagonalize_TCC22-1 nil 3615559416
   ("" (skeep)
    (("" (assert) (("" (skeep) (("" (assertnil nil)) nil)) nil)) nil)
   ((minus_real_is_real application-judgement "real" reals nil)
    (int_minus_int_is_int application-judgement "int" integers nil)
    (rat_max application-judgement "{s: rat | s >= q AND s >= r}"
     real_defs nil)
    (int_max application-judgement "{k: int | i <= k AND j <= k}"
     real_defs nil)
    (real_ge_is_total_order name-judgement "(total_order?[real])"
     real_props nil)
    (real_div_nzreal_is_real application-judgement "real" reals nil))
   nil))
 (diagonalize_TCC23 0
  (diagonalize_TCC23-1 nil 3615559416
   ("" (skeep)
    (("" (skeep)
      (("" (assert)
        (("" (rewrite "lex2_lt")
          (("1" (typepred "i")
            (("1" (expand "d_point2") (("1" (propax) nil nil)) nil))
            nil)
           ("2" (typepred "i")
            (("2" (expand "d_point2") (("2" (propax) nil nil)) nil))
            nil))
          nil))
        nil))
      nil))
    nil)
   ((real_ge_is_total_order name-judgement "(total_order?[real])"
     real_props nil)
    (int_plus_int_is_int application-judgement "int" integers nil)
    (lex2_lt formula-decl nil lex2 nil)
    (number nonempty-type-decl nil numbers nil)
    (boolean nonempty-type-decl nil booleans nil)
    (number_field_pred const-decl "[number -> boolean]" number_fields
     nil)
    (number_field nonempty-type-from-decl nil number_fields nil)
    (real_pred const-decl "[number_field -> boolean]" reals nil)
    (real nonempty-type-from-decl nil reals nil)
    (rational_pred const-decl "[real -> boolean]" rationals nil)
    (rational nonempty-type-from-decl nil rationals nil)
    (integer_pred const-decl "[rational -> boolean]" integers nil)
    (int nonempty-type-eq-decl nil integers nil)
    (bool nonempty-type-eq-decl nil booleans nil)
    (>= const-decl "bool" reals nil)
    (nat nonempty-type-eq-decl nil naturalnumbers nil)
    (list type-decl nil list_adt nil)
    (PRED type-eq-decl nil defined_types nil)
    (every adt-def-decl "boolean" list_adt nil)
    (AND const-decl "[bool, bool -> bool]" booleans nil)
    (Matrix type-eq-decl nil matrices nil)
    (OR const-decl "[bool, bool -> bool]" booleans nil)
    (null? adt-recognizer-decl "[list -> boolean]" list_adt nil)
    (< const-decl "bool" reals nil)
    (length def-decl "nat" list_props nil)
    (below type-eq-decl nil naturalnumbers nil)
    (= const-decl "[T, T -> boolean]" equalities nil)
    (below type-eq-decl nil nat_types nil)
    (nth def-decl "T" list_props nil)
    (FullMatrix type-eq-decl nil matrices nil)
    (> const-decl "bool" reals nil)
    (rows const-decl "nat" matrices nil)
    (<= const-decl "bool" reals nil)
    (columns def-decl "{c: nat |
         (FORALL (i: below(length(M))): length(nth(M, i)) <= c) AND
          (null?(M) AND c = 0 OR
            (EXISTS (i: below(length(M))): length(nth(M, i)) = c))}"
             matrices nil)
    (PosFullMatrix type-eq-decl nil matrices nil)
    (Square type-eq-decl nil matrices nil)
    (d_point1 const-decl "bool" matrix_diag nil)
    (nonneg_int nonempty-type-eq-decl nil integers nil)
    (posnat nonempty-type-eq-decl nil integers nil)
    (SquareMatrix type-eq-decl nil matrices nil)
    (upper_triangular? const-decl "bool" matrix_det nil)
    (numfield nonempty-type-eq-decl nil number_fields nil)
    (+ const-decl "[numfield, numfield -> numfield]" number_fields nil)
    (- const-decl "[numfield, numfield -> numfield]" number_fields nil)
    (d_point2 const-decl "bool" matrix_diag nil)
    (real_lt_is_strict_total_order name-judgement
     "(strict_total_order?[real])" real_props nil)
    (NOT const-decl "[bool -> bool]" booleans nil)
    (real_div_nzreal_is_real application-judgement "real" reals nil)
    (minus_real_is_real application-judgement "real" reals nil)
    (nnint_plus_posint_is_posint application-judgement "posint"
     integers nil)
    (int_minus_int_is_int application-judgement "int" integers nil))
   nil))
 (diagonalize_TCC24 0
  (diagonalize_TCC24-1 nil 3615559416
   ("" (skeep)
    (("" (label "answ" 6)
      (("" (hide "answ")
        (("" (case "NOT (i<pn AND j < pn AND i<j)")
          (("1" (typepred "j")
            (("1" (typepred "i")
              (("1" (expand "d_point1")
                (("1" (expand "d_point2")
                  (("1" (flatten) (("1" (assertnil nil)) nil)) nil))
                nil))
              nil))
            nil)
           ("2" (flatten)
            (("2" (case "(null?(R) OR null?(S) OR null?(Q))")
              (("1" (label "igz" -1)
                (("1" (typepred "R")
                  (("1" (typepred "S")
                    (("1" (typepred "Q")
                      (("1" (expand "rows")
                        (("1" (expand "length")
                          (("1" (split "igz")
                            (("1" (assertnil nil)
                             ("2" (assertnil nil)
                             ("3" (assertnil nil))
                            nil))
                          nil))
                        nil))
                      nil))
                    nil))
                  nil))
                nil)
               ("2" (flatten)
                (("2" (reveal "answ")
                  (("2" (skeep)
                    (("2" (hide "answ")
                      (("2"
                        (case "NOT length(row(S)(i) + pivnum * row(S)(j)) = pn")
                        (("1" (rewrite "length_add_vect")
                          (("1" (rewrite "length_scal_vect")
                            (("1" (rewrite "length_row")
                              (("1"
                                (rewrite "length_row")
                                (("1"
                                  (assert)
                                  (("1"
                                    (expand "max")
                                    (("1" (assertnil nil))
                                    nil))
                                  nil))
                                nil))
                              nil))
                            nil))
                          nil)
                         ("2"
                          (case "NOT length(row(Q)(i) + pivnum * row(Q)(j)) = pn")
                          (("1" (assert)
                            (("1" (rewrite "length_add_vect")
                              (("1"
                                (rewrite "length_scal_vect")
                                (("1"
                                  (rewrite "length_row")
                                  (("1"
                                    (rewrite "length_row")
                                    (("1"
                                      (expand "max")
                                      (("1" (assertnil nil))
                                      nil))
                                    nil))
                                  nil))
                                nil))
                              nil))
                            nil)
                           ("2" (assert)
                            (("2" (reveal "answ")
                              (("2"
                                (name
                                 "GG"
                                 "v(pn)
                    (comp_matrix, comp_inverse,
                     replace_row(i, row(S)(i) + pivnum * row(S)(j))(S),
                     IF comp_matrix
                       THEN replace_row(i, row(Q)(i) + pivnum * row(Q)(j))
                                       (Q)
                     ELSE Id(pn)
                     ENDIF,
                     IF comp_matrix AND comp_inverse
                       THEN R * Easr(pn)(i, j, -pivnum)
                     ELSE Id(pn)
                     ENDIF,
                     T, j, i + 1, stop_rec, max(k - 1, 0))")
                                (("1"
                                  (replaces -1)
                                  (("1"
                                    (hide 3)
                                    (("1"
                                      (typepred "GG")
                                      (("1"
                                        (assert)
                                        (("1"
                                          (flatten)
                                          (("1"
                                            (assert)
                                            (("1"
                                              (split +)
                                              (("1" (propax) nil nil)
                                               ("2" (propax) nil nil)
                                               ("3" (propax) nil nil)
                                               ("4" (propax) nil nil)
                                               ("5"
                                                (replace -6)
                                                (("5"
                                                  (rewrite
                                                   "det_replace_row_sum_scal")
                                                  nil
                                                  nil))
                                                nil))
                                              nil))
                                            nil))
                                          nil))
                                        nil))
                                      nil))
                                    nil))
                                  nil)
                                 ("2"
                                  (hide 4)
                                  (("2"
                                    (hide 3)
                                    (("2" (rewrite "lex2_lt"nil nil))
                                    nil))
                                  nil)
                                 ("3"
                                  (hide (3 4))
                                  (("3" (assertnil nil))
                                  nil)
                                 ("4"
                                  (hide (3 4))
                                  (("4"
                                    (assert)
                                    (("4"
                                      (typepred "i")
                                      (("4"
                                        (typepred "j")
                                        (("4"
                                          (expand "d_point2")
                                          (("4"
                                            (expand "d_point1")
                                            (("4"
                                              (assert)
                                              (("4"
                                                (rewrite
                                                 "rows_replace_row")
                                                (("4"
                                                  (assert)
                                                  (("4"
                                                    (skeep)
                                                    (("4"
                                                      (rewrite
                                                       "entry_replace_row")
                                                      (("4"
                                                        (rewrite
                                                         "entry_replace_row")
                                                        (("4"
                                                          (lift-if)
                                                          (("4"
                                                            (assert)
                                                            (("4"
                                                              (split +)
                                                              (("1"
                                                                (flatten)
                                                                (("1"
                                                                  (rewrite
                                                                   "access_sum")
                                                                  (("1"
                                                                    (rewrite
                                                                     "access_scal")
                                                                    (("1"
                                                                      (rewrite
                                                                       "access_row")
                                                                      (("1"
                                                                        (rewrite
                                                                         "access_row")
                                                                        (("1"
                                                                          (inst-cp
                                                                           -
                                                                           "i"
                                                                           "j")
                                                                          (("1"
                                                                            (inst
                                                                             -
                                                                             "j")
                                                                            (("1"
                                                                              (assert)
                                                                              nil
                                                                              nil))
                                                                            nil))
                                                                          nil))
                                                                        nil))
                                                                      nil))
                                                                    nil))
                                                                  nil))
                                                                nil)
                                                               ("2"
                                                                (flatten)
                                                                (("2"
                                                                  (inst
                                                                   -
                                                                   "k!1"
                                                                   "j")
                                                                  (("2"
                                                                    (assert)
                                                                    (("2"
                                                                      (inst
                                                                       -
                                                                       "k!1")
                                                                      (("2"
                                                                        (assert)
                                                                        nil
                                                                        nil))
                                                                      nil))
                                                                    nil))
                                                                  nil))
                                                                nil))
                                                              nil))
                                                            nil))
                                                          nil))
                                                        nil))
                                                      nil))
                                                    nil))
                                                  nil))
                                                nil))
                                              nil))
                                            nil))
                                          nil))
                                        nil))
                                      nil))
                                    nil))
                                  nil)
                                 ("5"
                                  (hide (3 4))
                                  (("5"
                                    (typepred "i")
                                    (("5"
                                      (typepred "j")
                                      (("5"
                                        (expand "d_point2")
                                        (("5"
                                          (expand "d_point1")
                                          (("5"
                                            (rewrite
                                             "rows_replace_row")
                                            (("5"
                                              (assert)
                                              (("5"
                                                (skeep)
                                                (("5"
                                                  (rewrite
                                                   "entry_replace_row")
                                                  (("5"
                                                    (rewrite
                                                     "entry_replace_row")
                                                    (("5"
                                                      (assert)
                                                      (("5"
                                                        (lift-if)
                                                        (("5"
                                                          (split +)
                                                          (("1"
                                                            (flatten)
                                                            (("1"
                                                              (replace
                                                               -1)
                                                              (("1"
                                                                (assert)
                                                                (("1"
                                                                  (rewrite
                                                                   "access_sum")
                                                                  (("1"
                                                                    (rewrite
                                                                     "access_scal")
                                                                    (("1"
                                                                      (rewrite
                                                                       "access_row")
                                                                      (("1"
                                                                        (rewrite
                                                                         "access_row")
                                                                        (("1"
                                                                          (assert)
                                                                          (("1"
                                                                            (inst-cp
                                                                             -
                                                                             "i"
                                                                             "p")
                                                                            (("1"
                                                                              (inst
                                                                               -
                                                                               "j"
                                                                               "p")
                                                                              (("1"
                                                                                (assert)
                                                                                (("1"
                                                                                  (inst
                                                                                   -
                                                                                   "i")
                                                                                  (("1"
                                                                                    (assert)
                                                                                    nil
                                                                                    nil))
                                                                                  nil))
                                                                                nil))
                                                                              nil))
                                                                            nil))
                                                                          nil))
                                                                        nil))
                                                                      nil))
                                                                    nil))
                                                                  nil))
                                                                nil))
                                                              nil))
                                                            nil)
                                                           ("2"
                                                            (flatten)
                                                            (("2"
                                                              (inst
                                                               -
                                                               "k!1"
                                                               "p")
                                                              (("2"
                                                                (assert)
                                                                nil
                                                                nil))
                                                              nil))
                                                            nil))
                                                          nil))
                                                        nil))
                                                      nil))
                                                    nil))
                                                  nil))
                                                nil))
                                              nil))
                                            nil))
                                          nil))
                                        nil))
                                      nil))
                                    nil))
                                  nil)
                                 ("6"
                                  (hide (3 4))
                                  (("6"
                                    (assert)
                                    (("6"
                                      (split 1)
                                      (("1"
                                        (flatten)
                                        (("1"
                                          (assert)
                                          (("1"
                                            (lemma "mult_Easr_left")
                                            (("1"
                                              (inst
                                               -
                                               "Q"
                                               "i"
                                               "j"
                                               "pn"
                                               "pivnum")
                                              (("1"
                                                (assert)
                                                (("1"
                                                  (replaces -1 :dir rl)
                                                  (("1"
                                                    (lemma
                                                     "mult_Easr_left")
                                                    (("1"
                                                      (inst
                                                       -
                                                       "S"
                                                       "i"
                                                       "j"
                                                       "pn"
                                                       "pivnum")
                                                      (("1"
                                                        (assert)
                                                        (("1"
                                                          (replaces
                                                           -1
                                                           :dir
                                                           rl)
                                                          (("1"
                                                            (rewrite
                                                             "matrix_mult_assoc")
                                                            (("1"
                                                              (typepred
                                                               "T")
                                                              (("1"
                                                                (assert)
                                                                nil
                                                                nil))
                                                              nil))
                                                            nil))
                                                          nil))
                                                        nil))
                                                      nil))
                                                    nil))
                                                  nil))
                                                nil))
                                              nil))
                                            nil))
                                          nil))
                                        nil)
                                       ("2"
                                        (skeep)
                                        (("2"
                                          (rewrite "entry_replace_row")
                                          (("2"
                                            (assert)
                                            (("2"
                                              (lift-if)
                                              (("2"
                                                (typepred "T")
                                                (("2"
                                                  (split 1)
                                                  (("1"
                                                    (flatten)
                                                    (("1"
                                                      (replaces -1)
                                                      (("1"
                                                        (assert)
                                                        (("1"
                                                          (rewrite
                                                           "access_sum")
                                                          (("1"
                                                            (rewrite
                                                             "access_scal")
                                                            (("1"
                                                              (rewrite
                                                               "access_row")
                                                              (("1"
                                                                (rewrite
                                                                 "access_row")
                                                                (("1"
                                                                  (typepred
                                                                   "S")
                                                                  (("1"
                                                                    (expand
                                                                     "upper_triangular?")
                                                                    (("1"
                                                                      (inst
                                                                       -
                                                                       "j"
                                                                       "i")
                                                                      (("1"
                                                                        (inst
                                                                         -
                                                                         "i")
                                                                        (("1"
                                                                          (assert)
                                                                          nil
                                                                          nil))
                                                                        nil))
                                                                      nil))
                                                                    nil))
                                                                  nil))
                                                                nil))
                                                              nil))
                                                            nil))
                                                          nil))
                                                        nil))
                                                      nil))
                                                    nil)
                                                   ("2"
                                                    (flatten)
                                                    (("2"
                                                      (inst - "i_1")
                                                      (("2"
                                                        (assert)
                                                        nil
                                                        nil))
                                                      nil))
                                                    nil))
                                                  nil))
                                                nil))
                                              nil))
                                            nil))
                                          nil))
                                        nil))
                                      nil))
                                    nil))
                                  nil)
                                 ("7"
                                  (hide (3 4))
                                  (("7"
                                    (flatten)
                                    (("7"
                                      (replace 1)
                                      (("7"
                                        (rewrite "Id_simple_prod")
                                        nil
                                        nil))
                                      nil))
                                    nil))
                                  nil)
                                 ("8"
                                  (hide (3 4))
                                  (("8"
                                    (flatten)
                                    (("8"
                                      (assert)
                                      (("8"
                                        (lemma "mult_Easr_left")
                                        (("8"
                                          (inst
                                           -
                                           "Q"
                                           "i"
                                           "j"
                                           "pn"
                                           "pivnum")
                                          (("8"
                                            (assert)
                                            (("8"
                                              (replaces -1 :dir rl)
                                              (("8"
                                                (assert)
                                                (("8"
                                                  (split +)
                                                  (("1"
                                                    (rewrite
                                                     "mult_simple_prod")
                                                    (("1"
                                                      (rewrite
                                                       "Easr_simple_prod")
                                                      nil
                                                      nil))
                                                    nil)
                                                   ("2"
                                                    (rewrite
                                                     "matrix_mult_assoc")
                                                    (("1"
                                                      (rewrite
                                                       "matrix_mult_assoc"
                                                       :dir
                                                       rl)
                                                      (("1"
                                                        (rewrite
                                                         "mult_Easr_Easr_inv")
                                                        (("1"
                                                          (rewrite
                                                           "mult_Id_left")
                                                          (("1"
                                                            (typepred
                                                             "R")
                                                            (("1"
                                                              (assert)
                                                              nil
                                                              nil))
                                                            nil))
                                                          nil))
                                                        nil)
                                                       ("2"
                                                        (rewrite
                                                         "Easr_null")
                                                        nil
                                                        nil))
                                                      nil)
                                                     ("2"
                                                      (rewrite
                                                       "Easr_null")
                                                      nil
                                                      nil))
                                                    nil)
                                                   ("3"
                                                    (rewrite
                                                     "matrix_mult_assoc")
                                                    (("3"
                                                      (rewrite
                                                       "matrix_mult_assoc"
                                                       :dir
                                                       rl)
                                                      (("3"
                                                        (typepred "R")
                                                        (("3"
                                                          (assert)
                                                          (("3"
                                                            (flatten)
                                                            (("3"
                                                              (replace
                                                               -9)
                                                              (("3"
                                                                (rewrite
                                                                 "mult_Id_left")
                                                                (("3"
                                                                  (assert)
                                                                  (("3"
                                                                    (rewrite
                                                                     "mult_Easr_Easr_inv")
                                                                    nil
                                                                    nil))
                                                                  nil))
                                                                nil))
                                                              nil))
                                                            nil))
                                                          nil))
                                                        nil))
                                                      nil))
                                                    nil)
                                                   ("4"
                                                    (rewrite
                                                     "rows_mult")
                                                    (("4"
                                                      (assert)
                                                      nil
                                                      nil))
                                                    nil)
                                                   ("5"
                                                    (rewrite
                                                     "rows_mult")
                                                    (("5"
                                                      (assert)
                                                      (("5"
                                                        (rewrite
                                                         "columns_mult")
                                                        (("5"
                                                          (assert)
                                                          nil
                                                          nil))
                                                        nil))
                                                      nil))
                                                    nil)
                                                   ("6"
                                                    (rewrite
                                                     "rows_mult")
                                                    (("6"
                                                      (assert)
                                                      nil
                                                      nil))
                                                    nil)
                                                   ("7"
                                                    (rewrite
                                                     "columns_mult")
                                                    (("7"
                                                      (assert)
                                                      nil
                                                      nil))
                                                    nil))
                                                  nil))
                                                nil))
                                              nil))
                                            nil))
                                          nil))
                                        nil))
                                      nil))
                                    nil))
                                  nil)
                                 ("9"
                                  (hide (3 4))
                                  (("9"
                                    (flatten)
                                    (("9"
                                      (rewrite "Id_simple_prod")
                                      nil
                                      nil))
                                    nil))
                                  nil)
                                 ("10"
                                  (hide (3 4))
                                  (("10"
                                    (flatten)
                                    (("10"
                                      (assert)
                                      (("10"
                                        (rewrite "rows_replace_row")
                                        (("10"
                                          (rewrite
                                           "columns_replace_row")
                                          (("10"
                                            (assert)
                                            (("10"
                                              (lemma "mult_Easr_left")
                                              (("10"
                                                (inst
                                                 -
                                                 "Q"
                                                 "i"
                                                 "j"
                                                 "pn"
                                                 "pivnum")
                                                (("10"
                                                  (assert)
                                                  (("10"
                                                    (replaces
                                                     -1
                                                     :dir
                                                     rl)
                                                    (("10"
                                                      (rewrite
                                                       "mult_simple_prod")
                                                      (("10"
                                                        (rewrite
                                                         "Easr_simple_prod")
                                                        nil
                                                        nil))
                                                      nil))
                                                    nil))
                                                  nil))
                                                nil))
                                              nil))
                                            nil))
                                          nil))
                                        nil))
                                      nil))
                                    nil))
                                  nil)
                                 ("11"
                                  (hide (3 4))
                                  (("11"
                                    (rewrite "rows_replace_row")
                                    (("11"
                                      (rewrite "columns_replace_row")
                                      (("11"
                                        (assert)
                                        (("11"
                                          (lemma "mult_Easr_left")
                                          (("11"
                                            (inst
                                             -
                                             "S"
                                             "i"
                                             "j"
                                             "pn"
                                             "pivnum")
                                            (("11"
                                              (assert)
                                              (("11"
                                                (replaces -1 :dir rl)
                                                (("11"
                                                  (rewrite
                                                   "upper_triangular_mult")
                                                  (("11"
                                                    (rewrite
                                                     "upper_triangular_Easr")
                                                    nil
                                                    nil))
                                                  nil))
                                                nil))
                                              nil))
                                            nil))
                                          nil))
                                        nil))
                                      nil))
                                    nil))
                                  nil))
                                nil))
                              nil))
                            nil))
                          nil))
                        nil))
                      nil))
                    nil))
                  nil))
                nil))
              nil))
            nil))
          nil))
        nil))
      nil))
    nil)
   ((d_point1 const-decl "bool" matrix_diag nil)
    (upper_triangular? const-decl "bool" matrix_det nil)
    (SquareMatrix type-eq-decl nil matrices nil)
    (posnat nonempty-type-eq-decl nil integers nil)
    (nonneg_int nonempty-type-eq-decl nil integers nil)
    (d_point2 const-decl "bool" matrix_diag nil)
    (Square type-eq-decl nil matrices nil)
    (PosFullMatrix type-eq-decl nil matrices nil)
    (columns def-decl "{c: nat |
         (FORALL (i: below(length(M))): length(nth(M, i)) <= c) AND
          (null?(M) AND c = 0 OR
            (EXISTS (i: below(length(M))): length(nth(M, i)) = c))}"
             matrices nil)
    (<= const-decl "bool" reals nil)
    (rows const-decl "nat" matrices nil)
    (> const-decl "bool" reals nil)
    (FullMatrix type-eq-decl nil matrices nil)
    (nth def-decl "T" list_props nil)
    (below type-eq-decl nil nat_types nil)
    (= const-decl "[T, T -> boolean]" equalities nil)
    (below type-eq-decl nil naturalnumbers nil)
    (length def-decl "nat" list_props nil)
    (null? adt-recognizer-decl "[list -> boolean]" list_adt nil)
    (OR const-decl "[bool, bool -> bool]" booleans nil)
    (Matrix type-eq-decl nil matrices nil)
    (every adt-def-decl "boolean" list_adt nil)
    (PRED type-eq-decl nil defined_types nil)
    (list type-decl nil list_adt nil)
    (nat nonempty-type-eq-decl nil naturalnumbers nil)
    (>= const-decl "bool" reals nil)
    (int nonempty-type-eq-decl nil integers nil)
    (integer_pred const-decl "[rational -> boolean]" integers nil)
    (rational nonempty-type-from-decl nil rationals nil)
    (rational_pred const-decl "[real -> boolean]" rationals nil)
    (< const-decl "bool" reals nil)
    (real nonempty-type-from-decl nil reals nil)
    (real_pred const-decl "[number_field -> boolean]" reals nil)
    (number_field nonempty-type-from-decl nil number_fields nil)
    (number_field_pred const-decl "[number -> boolean]" number_fields
     nil)
    (number nonempty-type-decl nil numbers nil)
    (AND const-decl "[bool, bool -> bool]" booleans nil)
    (NOT const-decl "[bool -> bool]" booleans nil)
    (bool nonempty-type-eq-decl nil booleans nil)
    (boolean nonempty-type-decl nil booleans nil)
    (real_le_is_total_order name-judgement "(total_order?[real])"
     real_props nil)
    (real_lt_is_strict_total_order name-judgement
     "(strict_total_order?[real])" real_props nil)
    (Id const-decl "{M: SquareMatrix(pm) |
         (FORALL (i, j):
            entry(M)(i, j) = IF i < pm AND i = j THEN 1 ELSE 0 ENDIF)
          AND
          (FORALL (pn: posnat, N: MatrixMN(pm, pn)): M * N = N) AND
           (FORALL (pn: posnat, N: MatrixMN(pn, pm)): N * M = N)}"
     matrices nil)
    (IF const-decl "[boolean, T, T -> T]" if_def nil)
    (* const-decl "{A: MatrixMN(rows(M), columns(N)) |
         FORALL (i, j): entry(A)(i, j) = row(M)(i) * col(N)(j)}"
       matrices nil)
    (col def-decl "VectorN(rows(M))" matrices nil)
    (VectorN type-eq-decl nil matrices nil)
    (row const-decl "Vector" matrices nil)
    (* const-decl "real" matrices nil)
    (Vector type-eq-decl nil matrices nil)
    (entry const-decl "real" matrices nil)
    (MatrixMN type-eq-decl nil matrices nil)
    (IMPLIES const-decl "[bool, bool -> bool]" booleans nil)
    (FALSE const-decl "bool" booleans nil)
    (is_simple_prod? const-decl "bool" matrix_det nil)
    (real_gt_is_strict_total_order name-judgement
     "(strict_total_order?[real])" real_props nil)
    (upper_triangular_mult formula-decl nil matrix_det nil)
    (upper_triangular_Easr formula-decl nil matrix_det nil)
    (columns_replace_row formula-decl nil matrix_props nil)
    (Easr_simple_prod formula-decl nil matrix_det nil)
    (mult_simple_prod formula-decl nil matrix_det nil)
    (mult_Id_left formula-decl nil matrices nil)
    (mult_Easr_Easr_inv formula-decl nil matrix_det nil)
    (Easr_null formula-decl nil matrix_det nil)
    (rows_mult formula-decl nil matrices nil)
    (columns_mult formula-decl nil matrices nil)
    (Id_simple_prod formula-decl nil matrix_det nil)
    (matrix_mult_assoc formula-decl nil matrices nil)
    (mult_Easr_left formula-decl nil matrix_det nil)
    (entry_replace_row formula-decl nil matrix_props nil)
    (access_sum formula-decl nil matrices nil)
    (real_plus_real_is_real application-judgement "real" reals nil)
    (access_row formula-decl nil matrices nil)
    (real_times_real_is_real application-judgement "real" reals nil)
    (access_scal formula-decl nil matrices nil)
    (rows_replace_row formula-decl nil matrix_props nil)
    (lex2_lt formula-decl nil lex2 nil)
    (int_plus_int_is_int application-judgement "int" integers nil)
    (det_replace_row_sum_scal formula-decl nil matrix_props nil)
    (real_div_nzreal_is_real application-judgement "real" reals nil)
    (posint_plus_nnint_is_posint application-judgement "posint"
     integers nil)
    (mult_full application-judgement "FullMatrix" matrices nil)
    (minus_real_is_real application-judgement "real" reals nil)
    (nnint_plus_posint_is_posint application-judgement "posint"
     integers nil)
    (int_minus_int_is_int application-judgement "int" integers nil)
    (int_max application-judgement "{k: int | i <= k AND j <= k}"
     real_defs nil)
    (rat_max application-judgement "{s: rat | s >= q AND s >= r}"
     real_defs nil)
    (ordstruct type-decl nil ordstruct_adt nil)
    (< def-decl "bool" ordinals nil)
    (ordinal? def-decl "bool" ordinals nil)
    (ordinal nonempty-type-eq-decl nil ordinals nil)
    (lex2 const-decl "ordinal" lex2 nil)
    (numfield nonempty-type-eq-decl nil number_fields nil)
    (- const-decl "[numfield, numfield -> numfield]" number_fields nil)
    (det def-decl "real" matrix_props nil)
    (access const-decl "real" matrices nil)
    (replace_row def-decl "{PFM |
         rows(PFM) = rows(D) AND
          columns(PFM) = columns(D) AND
           (FORALL (j):
              row(PFM)(j) =
               IF j < rows(D) AND j = i THEN v ELSE row(D)(j) ENDIF)
            AND
            (FORALL (j, k):
               entry(PFM)(j, k) =
                IF j < rows(D) AND j = i THEN access(v)(k)
                ELSE entry(D)(j, k)
                ENDIF)}" matrix_props nil)
    (Easr const-decl "SquareMatrix(pn)" matrix_det nil)
    (- const-decl "[numfield -> numfield]" number_fields nil)
    (+ const-decl "[numfield, numfield -> numfield]" number_fields nil)
    (length_add_vect formula-decl nil matrices nil)
    (nonneg_rat_max application-judgement
     "{s: nonneg_rat | s >= q AND s >= r}" real_defs nil)
    (nat_max application-judgement "{k: nat | i <= k AND j <= k}"
     real_defs nil)
    (length_row formula-decl nil matrix_props nil)
    (real_ge_is_total_order name-judgement "(total_order?[real])"
     real_props nil)
    (length_scal_vect formula-decl nil matrices nil)
    (* const-decl "VectorN(length(v2))" matrices nil)
    (+ const-decl "VectorN(max(length(v1), length(v2)))" matrices nil)
    (max const-decl "{p: real | p >= m AND p >= n}" real_defs nil))
   nil))
 (diagonalize_TCC25 0
  (diagonalize_TCC25-1 nil 3615559416 ("" (subtype-tcc) nil nil)
   ((boolean nonempty-type-decl nil booleans nil)
    (bool nonempty-type-eq-decl nil booleans nil)
    (NOT const-decl "[bool -> bool]" booleans nil)
    (number nonempty-type-decl nil numbers nil)
    (number_field_pred const-decl "[number -> boolean]" number_fields
     nil)
    (number_field nonempty-type-from-decl nil number_fields nil)
    (real_pred const-decl "[number_field -> boolean]" reals nil)
    (real nonempty-type-from-decl nil reals nil)
    (> const-decl "bool" reals nil)
    (rational_pred const-decl "[real -> boolean]" rationals nil)
    (rational nonempty-type-from-decl nil rationals nil)
    (integer_pred const-decl "[rational -> boolean]" integers nil)
    (int nonempty-type-eq-decl nil integers nil)
    (>= const-decl "bool" reals nil)
    (nonneg_int nonempty-type-eq-decl nil integers nil)
    (posnat nonempty-type-eq-decl nil integers nil)
    (list type-decl nil list_adt nil)
    (PRED type-eq-decl nil defined_types nil)
    (every adt-def-decl "boolean" list_adt nil)
    (AND const-decl "[bool, bool -> bool]" booleans nil)
    (Matrix type-eq-decl nil matrices nil)
    (OR const-decl "[bool, bool -> bool]" booleans nil)
    (null? adt-recognizer-decl "[list -> boolean]" list_adt nil)
    (nat nonempty-type-eq-decl nil naturalnumbers nil)
    (< const-decl "bool" reals nil)
    (length def-decl "nat" list_props nil)
    (below type-eq-decl nil naturalnumbers nil)
    (= const-decl "[T, T -> boolean]" equalities nil)
    (below type-eq-decl nil nat_types nil)
    (nth def-decl "T" list_props nil)
    (FullMatrix type-eq-decl nil matrices nil)
    (rows const-decl "nat" matrices nil)
    (<= const-decl "bool" reals nil)
    (columns def-decl "{c: nat |
         (FORALL (i: below(length(M))): length(nth(M, i)) <= c) AND
          (null?(M) AND c = 0 OR
            (EXISTS (i: below(length(M))): length(nth(M, i)) = c))}"
             matrices nil)
    (PosFullMatrix type-eq-decl nil matrices nil)
    (Square type-eq-decl nil matrices nil)
    (SquareMatrix type-eq-decl nil matrices nil)
    (upper_triangular? const-decl "bool" matrix_det nil)
    (is_simple_prod? const-decl "bool" matrix_det nil)
    (FALSE const-decl "bool" booleans nil)
    (IMPLIES const-decl "[bool, bool -> bool]" booleans nil)
    (MatrixMN type-eq-decl nil matrices nil)
    (Vector type-eq-decl nil matrices nil)
    (* const-decl "real" matrices nil)
    (row const-decl "Vector" matrices nil)
    (VectorN type-eq-decl nil matrices nil)
    (col def-decl "VectorN(rows(M))" matrices nil)
    (* const-decl "{A: MatrixMN(rows(M), columns(N)) |
         FORALL (i, j): entry(A)(i, j) = row(M)(i) * col(N)(j)}"
       matrices nil)
    (IF const-decl "[boolean, T, T -> T]" if_def nil)
    (Id const-decl "{M: SquareMatrix(pm) |
         (FORALL (i, j):
            entry(M)(i, j) = IF i < pm AND i = j THEN 1 ELSE 0 ENDIF)
          AND
          (FORALL (pn: posnat, N: MatrixMN(pm, pn)): M * N = N) AND
           (FORALL (pn: posnat, N: MatrixMN(pn, pm)): N * M = N)}"
     matrices nil)
    (d_point1 const-decl "bool" matrix_diag nil)
    (d_point2 const-decl "bool" matrix_diag nil)
    (entry const-decl "real" matrices nil))
   nil))
 (diag_TCC1 0
  (diag_TCC1-1 nil 3615632440 ("" (subtype-tcc) nil nil)
   ((boolean nonempty-type-decl nil booleans nil)
    (bool nonempty-type-eq-decl nil booleans nil)
    (NOT const-decl "[bool -> bool]" booleans nil)
    (number nonempty-type-decl nil numbers nil)
    (list type-decl nil list_adt nil)
    (PRED type-eq-decl nil defined_types nil)
    (every adt-def-decl "boolean" list_adt nil)
    (AND const-decl "[bool, bool -> bool]" booleans nil)
    (number_field_pred const-decl "[number -> boolean]" number_fields
     nil)
    (number_field nonempty-type-from-decl nil number_fields nil)
    (real_pred const-decl "[number_field -> boolean]" reals nil)
    (Matrix type-eq-decl nil matrices nil)
    (OR const-decl "[bool, bool -> bool]" booleans nil)
    (real nonempty-type-from-decl nil reals nil)
    (null? adt-recognizer-decl "[list -> boolean]" list_adt nil)
    (rational_pred const-decl "[real -> boolean]" rationals nil)
    (rational nonempty-type-from-decl nil rationals nil)
    (integer_pred const-decl "[rational -> boolean]" integers nil)
    (int nonempty-type-eq-decl nil integers nil)
    (>= const-decl "bool" reals nil)
    (nat nonempty-type-eq-decl nil naturalnumbers nil)
    (< const-decl "bool" reals nil)
    (length def-decl "nat" list_props nil)
    (below type-eq-decl nil naturalnumbers nil)
    (= const-decl "[T, T -> boolean]" equalities nil)
    (below type-eq-decl nil nat_types nil)
    (nth def-decl "T" list_props nil)
    (FullMatrix type-eq-decl nil matrices nil)
    (> const-decl "bool" reals nil) (<= const-decl "bool" reals nil)
    (columns def-decl "{c: nat |
         (FORALL (i: below(length(M))): length(nth(M, i)) <= c) AND
          (null?(M) AND c = 0 OR
            (EXISTS (i: below(length(M))): length(nth(M, i)) = c))}"
             matrices nil)
    (PosFullMatrix type-eq-decl nil matrices nil)
    (Square type-eq-decl nil matrices nil)
    (real_gt_is_strict_total_order name-judgement
     "(strict_total_order?[real])" real_props nil)
    (rows const-decl "nat" matrices nil))
   nil))
 (diag_TCC2 0
  (diag_TCC2-1 nil 3615632440
   ("" (skeep) (("" (rewrite "Id_simple_prod"nil nil)) nil)
   ((Id_simple_prod formula-decl nil matrix_det nil)
    (boolean nonempty-type-decl nil booleans nil)
    (bool nonempty-type-eq-decl nil booleans nil)
    (FALSE const-decl "bool" booleans nil)
    (number nonempty-type-decl nil numbers nil)
    (number_field_pred const-decl "[number -> boolean]" number_fields
     nil)
    (number_field nonempty-type-from-decl nil number_fields nil)
    (real_pred const-decl "[number_field -> boolean]" reals nil)
    (real nonempty-type-from-decl nil reals nil)
    (rational_pred const-decl "[real -> boolean]" rationals nil)
    (rational nonempty-type-from-decl nil rationals nil)
    (integer_pred const-decl "[rational -> boolean]" integers nil)
    (int nonempty-type-eq-decl nil integers nil)
    (>= const-decl "bool" reals nil)
    (nonneg_int nonempty-type-eq-decl nil integers nil)
    (> const-decl "bool" reals nil)
    (posnat nonempty-type-eq-decl nil integers nil)
    (list type-decl nil list_adt nil)
    (PRED type-eq-decl nil defined_types nil)
    (every adt-def-decl "boolean" list_adt nil)
    (AND const-decl "[bool, bool -> bool]" booleans nil)
    (Matrix type-eq-decl nil matrices nil)
    (nat nonempty-type-eq-decl nil naturalnumbers nil)
    (rows const-decl "nat" matrices nil)
    (OR const-decl "[bool, bool -> bool]" booleans nil)
    (null? adt-recognizer-decl "[list -> boolean]" list_adt nil)
    (< const-decl "bool" reals nil)
    (length def-decl "nat" list_props nil)
    (below type-eq-decl nil naturalnumbers nil)
    (= const-decl "[T, T -> boolean]" equalities nil)
    (below type-eq-decl nil nat_types nil)
    (nth def-decl "T" list_props nil)
    (FullMatrix type-eq-decl nil matrices nil)
    (<= const-decl "bool" reals nil)
    (columns def-decl "{c: nat |
         (FORALL (i: below(length(M))): length(nth(M, i)) <= c) AND
          (null?(M) AND c = 0 OR
            (EXISTS (i: below(length(M))): length(nth(M, i)) = c))}"
             matrices nil)
    (PosFullMatrix type-eq-decl nil matrices nil)
    (Square type-eq-decl nil matrices nil))
   nil))
 (diag_TCC3 0
  (diag_TCC3-1 nil 3615632440
   ("" (skeep)
    (("" (rewrite "Id_simple_prod")
      (("" (flatten) (("" (rewrite "mult_Id_left"nil nil)) nil))
      nil))
    nil)
   ((real_gt_is_strict_total_order name-judgement
     "(strict_total_order?[real])" real_props nil)
    (Id_simple_prod formula-decl nil matrix_det nil)
    (boolean nonempty-type-decl nil booleans nil)
    (bool nonempty-type-eq-decl nil booleans nil)
    (FALSE const-decl "bool" booleans nil)
    (number nonempty-type-decl nil numbers nil)
    (number_field_pred const-decl "[number -> boolean]" number_fields
     nil)
    (number_field nonempty-type-from-decl nil number_fields nil)
    (real_pred const-decl "[number_field -> boolean]" reals nil)
    (real nonempty-type-from-decl nil reals nil)
    (rational_pred const-decl "[real -> boolean]" rationals nil)
    (rational nonempty-type-from-decl nil rationals nil)
    (integer_pred const-decl "[rational -> boolean]" integers nil)
    (int nonempty-type-eq-decl nil integers nil)
    (>= const-decl "bool" reals nil)
    (nonneg_int nonempty-type-eq-decl nil integers nil)
    (> const-decl "bool" reals nil)
    (posnat nonempty-type-eq-decl nil integers nil)
    (list type-decl nil list_adt nil)
    (PRED type-eq-decl nil defined_types nil)
    (every adt-def-decl "boolean" list_adt nil)
    (AND const-decl "[bool, bool -> bool]" booleans nil)
    (Matrix type-eq-decl nil matrices nil)
    (nat nonempty-type-eq-decl nil naturalnumbers nil)
    (rows const-decl "nat" matrices nil)
    (OR const-decl "[bool, bool -> bool]" booleans nil)
    (null? adt-recognizer-decl "[list -> boolean]" list_adt nil)
    (< const-decl "bool" reals nil)
    (length def-decl "nat" list_props nil)
    (below type-eq-decl nil naturalnumbers nil)
    (= const-decl "[T, T -> boolean]" equalities nil)
    (below type-eq-decl nil nat_types nil)
    (nth def-decl "T" list_props nil)
    (FullMatrix type-eq-decl nil matrices nil)
    (<= const-decl "bool" reals nil)
    (columns def-decl "{c: nat |
         (FORALL (i: below(length(M))): length(nth(M, i)) <= c) AND
          (null?(M) AND c = 0 OR
            (EXISTS (i: below(length(M))): length(nth(M, i)) = c))}"
             matrices nil)
    (PosFullMatrix type-eq-decl nil matrices nil)
    (Square type-eq-decl nil matrices nil)
    (mult_Id_left formula-decl nil matrices nil)
    (SquareMatrix type-eq-decl nil matrices nil)
    (entry const-decl "real" matrices nil)
    (IF const-decl "[boolean, T, T -> T]" if_def nil)
    (MatrixMN type-eq-decl nil matrices nil)
    (Vector type-eq-decl nil matrices nil)
    (* const-decl "real" matrices nil)
    (row const-decl "Vector" matrices nil)
    (VectorN type-eq-decl nil matrices nil)
    (col def-decl "VectorN(rows(M))" matrices nil)
    (* const-decl "{A: MatrixMN(rows(M), columns(N)) |
         FORALL (i, j): entry(A)(i, j) = row(M)(i) * col(N)(j)}"
       matrices nil)
    (Id const-decl "{M: SquareMatrix(pm) |
         (FORALL (i, j):
            entry(M)(i, j) = IF i < pm AND i = j THEN 1 ELSE 0 ENDIF)
          AND
          (FORALL (pn: posnat, N: MatrixMN(pm, pn)): M * N = N) AND
           (FORALL (pn: posnat, N: MatrixMN(pn, pm)): N * M = N)}"
     matrices nil))
   nil))
 (diag_TCC4 0
  (diag_TCC4-1 nil 3615632440
   ("" (skeep) (("" (rewrite "mult_Id_left"nil nil)) nil)
   ((mult_Id_left formula-decl nil matrices nil)
    (number nonempty-type-decl nil numbers nil)
    (list type-decl nil list_adt nil)
    (boolean nonempty-type-decl nil booleans nil)
    (bool nonempty-type-eq-decl nil booleans nil)
    (PRED type-eq-decl nil defined_types nil)
    (every adt-def-decl "boolean" list_adt nil)
    (AND const-decl "[bool, bool -> bool]" booleans nil)
    (number_field_pred const-decl "[number -> boolean]" number_fields
     nil)
    (number_field nonempty-type-from-decl nil number_fields nil)
    (real_pred const-decl "[number_field -> boolean]" reals nil)
    (Matrix type-eq-decl nil matrices nil)
    (OR const-decl "[bool, bool -> bool]" booleans nil)
    (real nonempty-type-from-decl nil reals nil)
    (null? adt-recognizer-decl "[list -> boolean]" list_adt nil)
    (rational_pred const-decl "[real -> boolean]" rationals nil)
    (rational nonempty-type-from-decl nil rationals nil)
    (integer_pred const-decl "[rational -> boolean]" integers nil)
    (int nonempty-type-eq-decl nil integers nil)
    (>= const-decl "bool" reals nil)
    (nat nonempty-type-eq-decl nil naturalnumbers nil)
    (< const-decl "bool" reals nil)
    (length def-decl "nat" list_props nil)
    (below type-eq-decl nil naturalnumbers nil)
    (= const-decl "[T, T -> boolean]" equalities nil)
    (below type-eq-decl nil nat_types nil)
    (nth def-decl "T" list_props nil)
    (FullMatrix type-eq-decl nil matrices nil)
    (> const-decl "bool" reals nil)
    (rows const-decl "nat" matrices nil)
    (<= const-decl "bool" reals nil)
    (columns def-decl "{c: nat |
         (FORALL (i: below(length(M))): length(nth(M, i)) <= c) AND
          (null?(M) AND c = 0 OR
            (EXISTS (i: below(length(M))): length(nth(M, i)) = c))}"
             matrices nil)
    (PosFullMatrix type-eq-decl nil matrices nil)
    (Square type-eq-decl nil matrices nil)
    (nonneg_int nonempty-type-eq-decl nil integers nil)
    (posnat nonempty-type-eq-decl nil integers nil))
   nil))
 (diag_TCC5 0
  (diag_TCC5-1 nil 3615632440 ("" (subtype-tcc) nil nil)
   ((boolean nonempty-type-decl nil booleans nil)
    (bool nonempty-type-eq-decl nil booleans nil)
    (NOT const-decl "[bool -> bool]" booleans nil)
    (number nonempty-type-decl nil numbers nil)
    (list type-decl nil list_adt nil)
    (PRED type-eq-decl nil defined_types nil)
    (every adt-def-decl "boolean" list_adt nil)
    (AND const-decl "[bool, bool -> bool]" booleans nil)
    (number_field_pred const-decl "[number -> boolean]" number_fields
     nil)
    (number_field nonempty-type-from-decl nil number_fields nil)
    (real_pred const-decl "[number_field -> boolean]" reals nil)
    (Matrix type-eq-decl nil matrices nil)
    (OR const-decl "[bool, bool -> bool]" booleans nil)
    (real nonempty-type-from-decl nil reals nil)
    (null? adt-recognizer-decl "[list -> boolean]" list_adt nil)
    (rational_pred const-decl "[real -> boolean]" rationals nil)
    (rational nonempty-type-from-decl nil rationals nil)
    (integer_pred const-decl "[rational -> boolean]" integers nil)
    (int nonempty-type-eq-decl nil integers nil)
    (>= const-decl "bool" reals nil)
    (nat nonempty-type-eq-decl nil naturalnumbers nil)
    (< const-decl "bool" reals nil)
    (length def-decl "nat" list_props nil)
    (below type-eq-decl nil naturalnumbers nil)
    (= const-decl "[T, T -> boolean]" equalities nil)
    (below type-eq-decl nil nat_types nil)
    (nth def-decl "T" list_props nil)
    (FullMatrix type-eq-decl nil matrices nil)
    (> const-decl "bool" reals nil) (<= const-decl "bool" reals nil)
    (columns def-decl "{c: nat |
         (FORALL (i: below(length(M))): length(nth(M, i)) <= c) AND
          (null?(M) AND c = 0 OR
            (EXISTS (i: below(length(M))): length(nth(M, i)) = c))}"
             matrices nil)
    (PosFullMatrix type-eq-decl nil matrices nil)
    (Square type-eq-decl nil matrices nil)
    (real_lt_is_strict_total_order name-judgement
     "(strict_total_order?[real])" real_props nil)
    (real_gt_is_strict_total_order name-judgement
     "(strict_total_order?[real])" real_props nil)
    (rows const-decl "nat" matrices nil)
    (entry const-decl "real" matrices nil)
    (ut_point1 const-decl "bool" matrix_upper_triang nil))
   nil))
 (diag_TCC6 0
  (diag_TCC6-1 nil 3615632440 ("" (subtype-tcc) nil nil)
   ((boolean nonempty-type-decl nil booleans nil)
    (bool nonempty-type-eq-decl nil booleans nil)
    (NOT const-decl "[bool -> bool]" booleans nil)
    (number nonempty-type-decl nil numbers nil)
    (list type-decl nil list_adt nil)
    (PRED type-eq-decl nil defined_types nil)
    (every adt-def-decl "boolean" list_adt nil)
    (AND const-decl "[bool, bool -> bool]" booleans nil)
    (number_field_pred const-decl "[number -> boolean]" number_fields
     nil)
    (number_field nonempty-type-from-decl nil number_fields nil)
    (real_pred const-decl "[number_field -> boolean]" reals nil)
    (Matrix type-eq-decl nil matrices nil)
    (OR const-decl "[bool, bool -> bool]" booleans nil)
    (real nonempty-type-from-decl nil reals nil)
    (null? adt-recognizer-decl "[list -> boolean]" list_adt nil)
    (rational_pred const-decl "[real -> boolean]" rationals nil)
    (rational nonempty-type-from-decl nil rationals nil)
    (integer_pred const-decl "[rational -> boolean]" integers nil)
    (int nonempty-type-eq-decl nil integers nil)
    (>= const-decl "bool" reals nil)
    (nat nonempty-type-eq-decl nil naturalnumbers nil)
    (< const-decl "bool" reals nil)
    (length def-decl "nat" list_props nil)
    (below type-eq-decl nil naturalnumbers nil)
    (= const-decl "[T, T -> boolean]" equalities nil)
    (below type-eq-decl nil nat_types nil)
    (nth def-decl "T" list_props nil)
    (FullMatrix type-eq-decl nil matrices nil)
    (> const-decl "bool" reals nil) (<= const-decl "bool" reals nil)
    (columns def-decl "{c: nat |
         (FORALL (i: below(length(M))): length(nth(M, i)) <= c) AND
          (null?(M) AND c = 0 OR
            (EXISTS (i: below(length(M))): length(nth(M, i)) = c))}"
             matrices nil)
    (PosFullMatrix type-eq-decl nil matrices nil)
    (Square type-eq-decl nil matrices nil)
    (real_ge_is_total_order name-judgement "(total_order?[real])"
     real_props nil)
    (real_gt_is_strict_total_order name-judgement
     "(strict_total_order?[real])" real_props nil)
    (real_lt_is_strict_total_order name-judgement
     "(strict_total_order?[real])" real_props nil)
    (rows const-decl "nat" matrices nil)
    (entry const-decl "real" matrices nil)
    (ut_point2 const-decl "bool" matrix_upper_triang nil)
    (int_minus_int_is_int application-judgement "int" integers nil))
   nil))
 (diag_TCC7 0
  (diag_TCC7-1 nil 3615632440 ("" (skeep) (("" (assertnil nil)) nil)
   ((int_minus_int_is_int application-judgement "int" integers nil))
   nil))
 (diag_TCC8 0
  (diag_TCC8-1 nil 3615632440
   ("" (skeep)
    ((""
      (name "ut" "upper_triangulate(rows(S))
                        (comp_matrix, comp_inverse, S, Id(rows(S)),
                         Id(rows(S)), S, 0, rows(S) - 1, FALSE, 0)")
      (("" (replaces -1)
        (("" (typepred "ut")
          (("" (ground)
            (("1" (rewrite "mult_Id_left"nil nil)
             ("2" (rewrite "mult_Id_left"nil nil))
            nil))
          nil))
        nil))
      nil))
    nil)
   ((- const-decl "[numfield, numfield -> numfield]" number_fields nil)
    (numfield nonempty-type-eq-decl nil number_fields nil)
    (upper_triangulate def-decl
     "{SGI: [SquareMatrix(pn), SquareMatrix(pn), SquareMatrix(pn)] |
         (NOT stop_rec) IMPLIES
          (LET (S2, Q2, R2) = SGI IN
             upper_triangular?(S2) AND
              (comp_matrix IMPLIES
                Q2 * T = S2 AND is_simple_prod?(pn, FALSE, FALSE)(Q2))
               AND
               (comp_matrix AND comp_inverse IMPLIES
                 (R2 * Q2 = Id(pn) AND
                   Q2 * R2 = Id(pn) AND
                    is_simple_prod?(pn, FALSE, FALSE)(R2)))
                AND det(S2) = det(S))}" matrix_upper_triang nil)
    (det def-decl "real" matrix_props nil)
    (upper_triangular? const-decl "bool" matrix_det nil)
    (NOT const-decl "[bool -> bool]" booleans nil)
    (ut_point2 const-decl "bool" matrix_upper_triang nil)
    (ut_point1 const-decl "bool" matrix_upper_triang nil)
    (Id const-decl "{M: SquareMatrix(pm) |
         (FORALL (i, j):
            entry(M)(i, j) = IF i < pm AND i = j THEN 1 ELSE 0 ENDIF)
          AND
          (FORALL (pn: posnat, N: MatrixMN(pm, pn)): M * N = N) AND
           (FORALL (pn: posnat, N: MatrixMN(pn, pm)): N * M = N)}"
     matrices nil)
    (IF const-decl "[boolean, T, T -> T]" if_def nil)
    (* const-decl "{A: MatrixMN(rows(M), columns(N)) |
         FORALL (i, j): entry(A)(i, j) = row(M)(i) * col(N)(j)}"
       matrices nil)
    (col def-decl "VectorN(rows(M))" matrices nil)
    (VectorN type-eq-decl nil matrices nil)
    (row const-decl "Vector" matrices nil)
    (* const-decl "real" matrices nil)
    (Vector type-eq-decl nil matrices nil)
    (entry const-decl "real" matrices nil)
    (MatrixMN type-eq-decl nil matrices nil)
    (IMPLIES const-decl "[bool, bool -> bool]" booleans nil)
    (FALSE const-decl "bool" booleans nil)
    (is_simple_prod? const-decl "bool" matrix_det nil)
    (posnat nonempty-type-eq-decl nil integers nil)
    (nonneg_int nonempty-type-eq-decl nil integers nil)
    (SquareMatrix type-eq-decl nil matrices nil)
    (Square type-eq-decl nil matrices nil)
    (PosFullMatrix type-eq-decl nil matrices nil)
    (columns def-decl "{c: nat |
         (FORALL (i: below(length(M))): length(nth(M, i)) <= c) AND
          (null?(M) AND c = 0 OR
            (EXISTS (i: below(length(M))): length(nth(M, i)) = c))}"
             matrices nil)
    (<= const-decl "bool" reals nil)
    (rows const-decl "nat" matrices nil)
    (> const-decl "bool" reals nil)
    (FullMatrix type-eq-decl nil matrices nil)
    (nth def-decl "T" list_props nil)
    (below type-eq-decl nil nat_types nil)
    (= const-decl "[T, T -> boolean]" equalities nil)
    (below type-eq-decl nil naturalnumbers nil)
    (length def-decl "nat" list_props nil)
    (< const-decl "bool" reals nil)
    (nat nonempty-type-eq-decl nil naturalnumbers nil)
    (>= const-decl "bool" reals nil)
    (int nonempty-type-eq-decl nil integers nil)
    (integer_pred const-decl "[rational -> boolean]" integers nil)
    (rational nonempty-type-from-decl nil rationals nil)
    (rational_pred const-decl "[real -> boolean]" rationals nil)
    (null? adt-recognizer-decl "[list -> boolean]" list_adt nil)
    (real nonempty-type-from-decl nil reals nil)
    (OR const-decl "[bool, bool -> bool]" booleans nil)
    (Matrix type-eq-decl nil matrices nil)
    (real_pred const-decl "[number_field -> boolean]" reals nil)
    (number_field nonempty-type-from-decl nil number_fields nil)
    (number_field_pred const-decl "[number -> boolean]" number_fields
     nil)
    (AND const-decl "[bool, bool -> bool]" booleans nil)
    (every adt-def-decl "boolean" list_adt nil)
    (PRED type-eq-decl nil defined_types nil)
    (bool nonempty-type-eq-decl nil booleans nil)
    (boolean nonempty-type-decl nil booleans nil)
    (list type-decl nil list_adt nil)
    (number nonempty-type-decl nil numbers nil)
    (int_minus_int_is_int application-judgement "int" integers nil)
    (real_ge_is_total_order name-judgement "(total_order?[real])"
     real_props nil)
    (mult_Id_left formula-decl nil matrices nil)
    (mult_full application-judgement "FullMatrix" matrices nil))
   nil))
 (diag_TCC9 0
  (diag_TCC9-1 nil 3615632440
   ("" (skeep)
    (("" (assert)
      (("" (hide -)
        (("" (typepred "S2")
          (("" (expand "d_point1")
            (("" (skosimp*) (("" (rewrite "entry_eq_0" 1) nil nil))
              nil))
            nil))
          nil))
        nil))
      nil))
    nil)
   ((real_ge_is_total_order name-judgement "(total_order?[real])"
     real_props nil)
    (int_minus_int_is_int application-judgement "int" integers nil)
    (SquareMatrix type-eq-decl nil matrices nil)
    (Square type-eq-decl nil matrices nil)
    (PosFullMatrix type-eq-decl nil matrices nil)
    (columns def-decl "{c: nat |
         (FORALL (i: below(length(M))): length(nth(M, i)) <= c) AND
          (null?(M) AND c = 0 OR
            (EXISTS (i: below(length(M))): length(nth(M, i)) = c))}"
             matrices nil)
    (<= const-decl "bool" reals nil)
    (rows const-decl "nat" matrices nil)
    (> const-decl "bool" reals nil)
    (FullMatrix type-eq-decl nil matrices nil)
    (nth def-decl "T" list_props nil)
    (below type-eq-decl nil nat_types nil)
    (= const-decl "[T, T -> boolean]" equalities nil)
    (below type-eq-decl nil naturalnumbers nil)
    (length def-decl "nat" list_props nil)
    (< const-decl "bool" reals nil)
    (nat nonempty-type-eq-decl nil naturalnumbers nil)
    (>= const-decl "bool" reals nil)
    (int nonempty-type-eq-decl nil integers nil)
    (integer_pred const-decl "[rational -> boolean]" integers nil)
    (rational nonempty-type-from-decl nil rationals nil)
    (rational_pred const-decl "[real -> boolean]" rationals nil)
    (null? adt-recognizer-decl "[list -> boolean]" list_adt nil)
    (real nonempty-type-from-decl nil reals nil)
    (OR const-decl "[bool, bool -> bool]" booleans nil)
    (Matrix type-eq-decl nil matrices nil)
    (real_pred const-decl "[number_field -> boolean]" reals nil)
    (number_field nonempty-type-from-decl nil number_fields nil)
    (number_field_pred const-decl "[number -> boolean]" number_fields
     nil)
    (AND const-decl "[bool, bool -> bool]" booleans nil)
    (every adt-def-decl "boolean" list_adt nil)
    (PRED type-eq-decl nil defined_types nil)
    (list type-decl nil list_adt nil)
    (number nonempty-type-decl nil numbers nil)
    (NOT const-decl "[bool -> bool]" booleans nil)
    (bool nonempty-type-eq-decl nil booleans nil)
    (boolean nonempty-type-decl nil booleans nil)
    (entry_eq_0 formula-decl nil matrices nil)
    (real_gt_is_strict_total_order name-judgement
     "(strict_total_order?[real])" real_props nil)
    (real_lt_is_strict_total_order name-judgement
     "(strict_total_order?[real])" real_props nil)
    (d_point1 const-decl "bool" matrix_diag nil))
   nil))
 (diag_TCC10 0
  (diag_TCC10-1 nil 3615632440 ("" (subtype-tcc) nil nil)
   ((boolean nonempty-type-decl nil booleans nil)
    (bool nonempty-type-eq-decl nil booleans nil)
    (NOT const-decl "[bool -> bool]" booleans nil)
    (number nonempty-type-decl nil numbers nil)
    (list type-decl nil list_adt nil)
    (PRED type-eq-decl nil defined_types nil)
    (every adt-def-decl "boolean" list_adt nil)
    (AND const-decl "[bool, bool -> bool]" booleans nil)
    (number_field_pred const-decl "[number -> boolean]" number_fields
     nil)
    (number_field nonempty-type-from-decl nil number_fields nil)
    (real_pred const-decl "[number_field -> boolean]" reals nil)
    (Matrix type-eq-decl nil matrices nil)
    (OR const-decl "[bool, bool -> bool]" booleans nil)
    (real nonempty-type-from-decl nil reals nil)
    (null? adt-recognizer-decl "[list -> boolean]" list_adt nil)
    (rational_pred const-decl "[real -> boolean]" rationals nil)
    (rational nonempty-type-from-decl nil rationals nil)
    (integer_pred const-decl "[rational -> boolean]" integers nil)
    (int nonempty-type-eq-decl nil integers nil)
    (>= const-decl "bool" reals nil)
    (nat nonempty-type-eq-decl nil naturalnumbers nil)
    (< const-decl "bool" reals nil)
    (length def-decl "nat" list_props nil)
    (below type-eq-decl nil naturalnumbers nil)
    (= const-decl "[T, T -> boolean]" equalities nil)
    (below type-eq-decl nil nat_types nil)
    (nth def-decl "T" list_props nil)
    (FullMatrix type-eq-decl nil matrices nil)
    (> const-decl "bool" reals nil) (<= const-decl "bool" reals nil)
    (columns def-decl "{c: nat |
         (FORALL (i: below(length(M))): length(nth(M, i)) <= c) AND
          (null?(M) AND c = 0 OR
            (EXISTS (i: below(length(M))): length(nth(M, i)) = c))}"
             matrices nil)
    (PosFullMatrix type-eq-decl nil matrices nil)
    (Square type-eq-decl nil matrices nil)
    (SquareMatrix type-eq-decl nil matrices nil)
    (real_gt_is_strict_total_order name-judgement
     "(strict_total_order?[real])" real_props nil)
    (int_minus_int_is_int application-judgement "int" integers nil)
    (real_lt_is_strict_total_order name-judgement
     "(strict_total_order?[real])" real_props nil)
    (rows const-decl "nat" matrices nil)
    (array2list const-decl
                "{l: listn(n) | FORALL (i: below(n)): a(i) = nth(l, i)}"
                array2list "structures/")
    (form_matrix const-decl "{M: MatrixMN(m, n) |
         FORALL (i: below(m), j: below(n)): nth(row(M)(i), j) = F(i, j)}"
                 matrices nil)
    (Id const-decl "{M: SquareMatrix(pm) |
         (FORALL (i, j):
            entry(M)(i, j) = IF i < pm AND i = j THEN 1 ELSE 0 ENDIF)
          AND
          (FORALL (pn: posnat, N: MatrixMN(pm, pn)): M * N = N) AND
           (FORALL (pn: posnat, N: MatrixMN(pn, pm)): N * M = N)}"
     matrices nil)
    (entry const-decl "real" matrices nil)
    (d_point2 const-decl "bool" matrix_diag nil))
   nil))
 (diag_TCC11 0
  (diag_TCC11-1 nil 3615632440
   ("" (skeep)
    (("" (skeep)
      (("" (assert)
        (("" (rewrite "rows_mult")
          (("" (rewrite "columns_mult")
            (("1" (assertnil nil)
             ("2" (typepred "R2")
              (("2" (expand "rows")
                (("2" (expand "length") (("2" (assertnil nil)) nil))
                nil))
              nil))
            nil))
          nil))
        nil))
      nil))
    nil)
   ((rows_mult formula-decl nil matrices nil)
    (number nonempty-type-decl nil numbers nil)
    (list type-decl nil list_adt nil)
    (boolean nonempty-type-decl nil booleans nil)
    (bool nonempty-type-eq-decl nil booleans nil)
    (PRED type-eq-decl nil defined_types nil)
    (every adt-def-decl "boolean" list_adt nil)
    (AND const-decl "[bool, bool -> bool]" booleans nil)
    (number_field_pred const-decl "[number -> boolean]" number_fields
     nil)
    (number_field nonempty-type-from-decl nil number_fields nil)
    (real_pred const-decl "[number_field -> boolean]" reals nil)
    (Matrix type-eq-decl nil matrices nil)
    (OR const-decl "[bool, bool -> bool]" booleans nil)
    (real nonempty-type-from-decl nil reals nil)
    (null? adt-recognizer-decl "[list -> boolean]" list_adt nil)
    (rational_pred const-decl "[real -> boolean]" rationals nil)
    (rational nonempty-type-from-decl nil rationals nil)
    (integer_pred const-decl "[rational -> boolean]" integers nil)
    (int nonempty-type-eq-decl nil integers nil)
    (>= const-decl "bool" reals nil)
    (nat nonempty-type-eq-decl nil naturalnumbers nil)
    (< const-decl "bool" reals nil)
    (length def-decl "nat" list_props nil)
    (below type-eq-decl nil naturalnumbers nil)
    (= const-decl "[T, T -> boolean]" equalities nil)
    (below type-eq-decl nil nat_types nil)
    (nth def-decl "T" list_props nil)
    (FullMatrix type-eq-decl nil matrices nil)
    (> const-decl "bool" reals nil)
    (rows const-decl "nat" matrices nil)
    (<= const-decl "bool" reals nil)
    (columns def-decl "{c: nat |
         (FORALL (i: below(length(M))): length(nth(M, i)) <= c) AND
          (null?(M) AND c = 0 OR
            (EXISTS (i: below(length(M))): length(nth(M, i)) = c))}"
             matrices nil)
    (PosFullMatrix type-eq-decl nil matrices nil)
    (Square type-eq-decl nil matrices nil)
    (SquareMatrix type-eq-decl nil matrices nil)
    (NOT const-decl "[bool -> bool]" booleans nil)
    (real_gt_is_strict_total_order name-judgement
     "(strict_total_order?[real])" real_props nil)
    (columns_mult formula-decl nil matrices nil)
    (int_minus_int_is_int application-judgement "int" integers nil)
    (mult_full application-judgement "FullMatrix" matrices nil))
   nil))
 (diag_TCC12 0
  (diag_TCC12-1 nil 3615632440
   ("" (skeep)
    (("" (skeep)
      (("" (rewrite "rows_mult")
        (("" (rewrite "columns_mult")
          (("1" (assertnil nil)
           ("2" (typepred "Q3")
            (("2" (expand "rows")
              (("2" (expand "length") (("2" (assertnil nil)) nil))
              nil))
            nil))
          nil))
        nil))
      nil))
    nil)
   ((columns_mult formula-decl nil matrices nil)
    (int_minus_int_is_int application-judgement "int" integers nil)
    (mult_full application-judgement "FullMatrix" matrices nil)
    (real_gt_is_strict_total_order name-judgement
     "(strict_total_order?[real])" real_props nil)
    (NOT const-decl "[bool -> bool]" booleans nil)
    (SquareMatrix type-eq-decl nil matrices nil)
    (Square type-eq-decl nil matrices nil)
    (PosFullMatrix type-eq-decl nil matrices nil)
    (columns def-decl "{c: nat |
         (FORALL (i: below(length(M))): length(nth(M, i)) <= c) AND
          (null?(M) AND c = 0 OR
            (EXISTS (i: below(length(M))): length(nth(M, i)) = c))}"
             matrices nil)
    (<= const-decl "bool" reals nil)
    (rows const-decl "nat" matrices nil)
    (> const-decl "bool" reals nil)
    (FullMatrix type-eq-decl nil matrices nil)
    (nth def-decl "T" list_props nil)
    (below type-eq-decl nil nat_types nil)
    (= const-decl "[T, T -> boolean]" equalities nil)
    (below type-eq-decl nil naturalnumbers nil)
    (length def-decl "nat" list_props nil)
    (< const-decl "bool" reals nil)
    (nat nonempty-type-eq-decl nil naturalnumbers nil)
    (>= const-decl "bool" reals nil)
    (int nonempty-type-eq-decl nil integers nil)
    (integer_pred const-decl "[rational -> boolean]" integers nil)
    (rational nonempty-type-from-decl nil rationals nil)
    (rational_pred const-decl "[real -> boolean]" rationals nil)
    (null? adt-recognizer-decl "[list -> boolean]" list_adt nil)
    (real nonempty-type-from-decl nil reals nil)
    (OR const-decl "[bool, bool -> bool]" booleans nil)
    (Matrix type-eq-decl nil matrices nil)
    (real_pred const-decl "[number_field -> boolean]" reals nil)
    (number_field nonempty-type-from-decl nil number_fields nil)
    (number_field_pred const-decl "[number -> boolean]" number_fields
     nil)
    (AND const-decl "[bool, bool -> bool]" booleans nil)
    (every adt-def-decl "boolean" list_adt nil)
    (PRED type-eq-decl nil defined_types nil)
    (bool nonempty-type-eq-decl nil booleans nil)
    (boolean nonempty-type-decl nil booleans nil)
    (list type-decl nil list_adt nil)
    (number nonempty-type-decl nil numbers nil)
    (rows_mult formula-decl nil matrices nil))
   nil))
 (diag_TCC13 0
  (diag_TCC13-1 nil 3615632440
   ("" (skeep)
    (("" (skeep)
      ((""
        (name "ut" "upper_triangulate(rows(S))
                                      (comp_matrix, comp_inverse, S, Id(rows(S)),
                                       Id(rows(S)), S, 0, rows(S) - 1, FALSE, 0)")
        (("" (replace -1)
          ((""
            (name "dt" "diagonalize(rows(S))
                                (comp_matrix, comp_inverse, S2, Id(rows(S)), Id(rows(S)),
                                 S2, rows(S) - 1, 0, FALSE, 0)")
            (("" (replaces -1)
              (("" (hide -1)
                (("" (assert)
                  (("" (typepred "ut")
                    (("" (typepred "dt")
                      (("" (assert)
                        (("" (replace -11 :dir rl)
                          (("" (replace -12 :dir rl)
                            (("" (replace -13 :dir rl)
                              ((""
                                (replace -14 :dir rl)
                                ((""
                                  (replace -15 :dir rl)
                                  ((""
                                    (replace -16 :dir rl)
                                    ((""
                                      (split +)
                                      (("1"
                                        (assert)
                                        (("1"
                                          (skeep)
                                          (("1"
                                            (assert)
                                            (("1"
                                              (inst - "k" "p")
                                              (("1"
                                                (assert)
                                                (("1"
                                                  (case "k < p")
                                                  (("1"
                                                    (assert)
                                                    nil
                                                    nil)
                                                   ("2"
                                                    (expand
                                                     "upper_triangular?")
                                                    (("2"
                                                      (inst - "k" "p")
                                                      (("2"
                                                        (assert)
                                                        nil
                                                        nil))
                                                      nil))
                                                    nil))
                                                  nil))
                                                nil))
                                              nil))
                                            nil))
                                          nil))
                                        nil)
                                       ("2"
                                        (flatten)
                                        (("2"
                                          (assert)
                                          (("2"
                                            (split 1)
                                            (("1"
                                              (rewrite
                                               "matrix_mult_assoc")
                                              (("1"
                                                (assert)
                                                (("1"
                                                  (flatten)
                                                  (("1"
                                                    (assert)
                                                    nil
                                                    nil))
                                                  nil))
                                                nil)
                                               ("2"
                                                (typepred "Q2")
                                                (("2"
                                                  (expand "rows")
                                                  (("2"
                                                    (expand "length")
                                                    (("2"
                                                      (assert)
                                                      nil
                                                      nil))
                                                    nil))
                                                  nil))
                                                nil))
                                              nil)
                                             ("2"
                                              (assert)
                                              (("2"
                                                (rewrite
                                                 "mult_simple_prod")
                                                nil
                                                nil))
                                              nil))
                                            nil))
                                          nil))
                                        nil)
                                       ("3"
                                        (flatten)
                                        (("3"
                                          (assert)
                                          (("3"
                                            (rewrite
                                             "matrix_mult_assoc")
                                            (("1"
                                              (rewrite
                                               "matrix_mult_assoc")
                                              (("1"
                                                (rewrite
                                                 "matrix_mult_assoc"
                                                 :dir
                                                 rl)
                                                (("1"
                                                  (flatten)
                                                  (("1"
                                                    (replace -8)
                                                    (("1"
                                                      (rewrite
                                                       "mult_Id_left")
                                                      (("1"
                                                        (rewrite
                                                         "matrix_mult_assoc"
                                                         :dir
                                                         rl)
                                                        (("1"
                                                          (replace -16)
                                                          (("1"
                                                            (rewrite
                                                             "mult_Id_left")
                                                            (("1"
                                                              (assert)
                                                              (("1"
                                                                (rewrite
                                                                 "mult_simple_prod")
                                                                nil
                                                                nil))
                                                              nil))
                                                            nil))
                                                          nil)
                                                         ("2"
                                                          (typepred
                                                           "R2")
                                                          (("2"
                                                            (expand
                                                             "rows")
                                                            (("2"
                                                              (expand
                                                               "length")
                                                              (("2"
                                                                (assert)
                                                                nil
                                                                nil))
                                                              nil))
                                                            nil))
                                                          nil))
                                                        nil))
                                                      nil))
                                                    nil))
                                                  nil)
                                                 ("2"
                                                  (typepred "Q3")
                                                  (("2"
                                                    (expand "rows")
                                                    (("2"
                                                      (expand "length")
                                                      (("2"
                                                        (assert)
                                                        nil
                                                        nil))
                                                      nil))
                                                    nil))
                                                  nil))
                                                nil)
                                               ("2"
                                                (typepred "Q2")
                                                (("2"
                                                  (expand "rows")
                                                  (("2"
                                                    (expand "length")
                                                    (("2"
                                                      (assert)
                                                      nil
                                                      nil))
                                                    nil))
                                                  nil))
                                                nil))
                                              nil)
                                             ("2"
                                              (typepred "R3")
                                              (("2"
                                                (expand "rows")
                                                (("2"
                                                  (expand "length")
                                                  (("2"
                                                    (assert)
                                                    nil
                                                    nil))
                                                  nil))
                                                nil))
                                              nil))
                                            nil))
                                          nil))
                                        nil)
                                       ("4"
                                        (flatten)
                                        (("4"
                                          (assert)
                                          (("4"
                                            (skeep)
                                            (("4"
                                              (assert)
                                              (("4"
                                                (split +)
                                                (("1"
                                                  (flatten)
                                                  (("1"
                                                    (lemma
                                                     "det_upper_triangular_zero")
                                                    (("1"
                                                      (inst - "S3")
                                                      (("1"
                                                        (assert)
                                                        (("1"
                                                          (inst + "p")
                                                          (("1"
                                                            (assert)
                                                            (("1"
                                                              (inst
                                                               -
                                                               "k"
                                                               "p")
                                                              (("1"
                                                                (assert)
                                                                (("1"
                                                                  (expand
                                                                   "upper_triangular?")
                                                                  (("1"
                                                                    (inst
                                                                     -
                                                                     "k"
                                                                     "p")
                                                                    (("1"
                                                                      (assert)
                                                                      nil
                                                                      nil))
                                                                    nil))
                                                                  nil))
                                                                nil))
                                                              nil))
                                                            nil))
                                                          nil))
                                                        nil))
                                                      nil))
                                                    nil))
                                                  nil)
                                                 ("2"
                                                  (flatten)
                                                  (("2"
                                                    (lemma
                                                     "det_upper_triangular_zero")
                                                    (("2"
                                                      (inst - "S3")
                                                      (("2"
                                                        (assert)
                                                        (("2"
                                                          (inst + "k")
                                                          (("2"
                                                            (assert)
                                                            nil
                                                            nil))
                                                          nil))
                                                        nil))
                                                      nil))
                                                    nil))
                                                  nil))
                                                nil))
                                              nil))
                                            nil))
                                          nil))
                                        nil)
                                       ("5"
                                        (flatten)
                                        (("5"
                                          (lemma
                                           "det_upper_triangular_zero")
                                          (("5"
                                            (inst - "S3")
                                            (("5"
                                              (assert)
                                              (("5"
                                                (skosimp*)
                                                (("5"
                                                  (inst - "i!1" "i!1")
                                                  (("5"
                                                    (assert)
                                                    nil
                                                    nil))
                                                  nil))
                                                nil))
                                              nil))
                                            nil))
                                          nil))
                                        nil))
                                      nil))
                                    nil))
                                  nil))
                                nil))
                              nil))
                            nil))
                          nil))
                        nil))
                      nil))
                    nil))
                  nil))
                nil))
              nil))
            nil))
          nil))
        nil))
      nil))
    nil)
   ((mult_full application-judgement "FullMatrix" matrices nil)
    (real_gt_is_strict_total_order name-judgement
     "(strict_total_order?[real])" real_props nil)
    (real_lt_is_strict_total_order name-judgement
     "(strict_total_order?[real])" real_props nil)
    (mult_simple_prod formula-decl nil matrix_det nil)
    (matrix_mult_assoc formula-decl nil matrices nil)
    (mult_Id_left formula-decl nil matrices nil)
    (det_upper_triangular_zero formula-decl nil matrix_det nil)
    (diagonalize def-decl
     "{SGI: [SquareMatrix(pn), SquareMatrix(pn), SquareMatrix(pn)] |
         (NOT stop_rec) IMPLIES
          (LET (S2, Q2, R2) = SGI IN
                  upper_triangular?(S2)
              AND (FORALL (k):
                     k < rows(T) IMPLIES entry(T)(k, k) = entry(S2)(k, k))
              AND (FORALL (k, p):
                     k < rows(S2) AND k < rows(S2) AND k < p IMPLIES
                      (entry(S2)(p, p) = 0 OR entry(S2)(k, p) = 0))
              AND (comp_matrix IMPLIES
                    Q2 * T = S2 AND is_simple_prod?(pn, FALSE, FALSE)(Q2))
              AND (comp_matrix AND comp_inverse IMPLIES
                    (R2 * Q2 = Id(pn) AND
                      Q2 * R2 = Id(pn) AND
                       is_simple_prod?(pn, FALSE, FALSE)(R2)))
              AND det(S2) = det(S))}" matrix_diag nil)
    (d_point2 const-decl "bool" matrix_diag nil)
    (d_point1 const-decl "bool" matrix_diag nil)
    (real_ge_is_total_order name-judgement "(total_order?[real])"
     real_props nil)
    (int_minus_int_is_int application-judgement "int" integers nil)
    (number nonempty-type-decl nil numbers nil)
    (list type-decl nil list_adt nil)
    (boolean nonempty-type-decl nil booleans nil)
    (bool nonempty-type-eq-decl nil booleans nil)
    (PRED type-eq-decl nil defined_types nil)
    (every adt-def-decl "boolean" list_adt nil)
    (AND const-decl "[bool, bool -> bool]" booleans nil)
    (number_field_pred const-decl "[number -> boolean]" number_fields
     nil)
    (number_field nonempty-type-from-decl nil number_fields nil)
    (real_pred const-decl "[number_field -> boolean]" reals nil)
    (Matrix type-eq-decl nil matrices nil)
    (OR const-decl "[bool, bool -> bool]" booleans nil)
    (real nonempty-type-from-decl nil reals nil)
    (null? adt-recognizer-decl "[list -> boolean]" list_adt nil)
    (rational_pred const-decl "[real -> boolean]" rationals nil)
    (rational nonempty-type-from-decl nil rationals nil)
    (integer_pred const-decl "[rational -> boolean]" integers nil)
    (int nonempty-type-eq-decl nil integers nil)
    (>= const-decl "bool" reals nil)
    (nat nonempty-type-eq-decl nil naturalnumbers nil)
    (< const-decl "bool" reals nil)
    (length def-decl "nat" list_props nil)
    (below type-eq-decl nil naturalnumbers nil)
    (= const-decl "[T, T -> boolean]" equalities nil)
    (below type-eq-decl nil nat_types nil)
    (nth def-decl "T" list_props nil)
    (FullMatrix type-eq-decl nil matrices nil)
    (> const-decl "bool" reals nil)
    (rows const-decl "nat" matrices nil)
    (<= const-decl "bool" reals nil)
    (columns def-decl "{c: nat |
         (FORALL (i: below(length(M))): length(nth(M, i)) <= c) AND
          (null?(M) AND c = 0 OR
            (EXISTS (i: below(length(M))): length(nth(M, i)) = c))}"
             matrices nil)
    (PosFullMatrix type-eq-decl nil matrices nil)
    (Square type-eq-decl nil matrices nil)
    (SquareMatrix type-eq-decl nil matrices nil)
    (nonneg_int nonempty-type-eq-decl nil integers nil)
    (posnat nonempty-type-eq-decl nil integers nil)
    (is_simple_prod? const-decl "bool" matrix_det nil)
    (FALSE const-decl "bool" booleans nil)
    (IMPLIES const-decl "[bool, bool -> bool]" booleans nil)
    (MatrixMN type-eq-decl nil matrices nil)
    (entry const-decl "real" matrices nil)
    (Vector type-eq-decl nil matrices nil)
    (* const-decl "real" matrices nil)
    (row const-decl "Vector" matrices nil)
    (VectorN type-eq-decl nil matrices nil)
    (col def-decl "VectorN(rows(M))" matrices nil)
    (* const-decl "{A: MatrixMN(rows(M), columns(N)) |
         FORALL (i, j): entry(A)(i, j) = row(M)(i) * col(N)(j)}"
       matrices nil)
    (IF const-decl "[boolean, T, T -> T]" if_def nil)
    (Id const-decl "{M: SquareMatrix(pm) |
         (FORALL (i, j):
            entry(M)(i, j) = IF i < pm AND i = j THEN 1 ELSE 0 ENDIF)
          AND
          (FORALL (pn: posnat, N: MatrixMN(pm, pn)): M * N = N) AND
           (FORALL (pn: posnat, N: MatrixMN(pn, pm)): N * M = N)}"
     matrices nil)
    (ut_point1 const-decl "bool" matrix_upper_triang nil)
    (ut_point2 const-decl "bool" matrix_upper_triang nil)
    (NOT const-decl "[bool -> bool]" booleans nil)
    (upper_triangular? const-decl "bool" matrix_det nil)
    (det def-decl "real" matrix_props nil)
    (upper_triangulate def-decl
     "{SGI: [SquareMatrix(pn), SquareMatrix(pn), SquareMatrix(pn)] |
         (NOT stop_rec) IMPLIES
          (LET (S2, Q2, R2) = SGI IN
             upper_triangular?(S2) AND
              (comp_matrix IMPLIES
                Q2 * T = S2 AND is_simple_prod?(pn, FALSE, FALSE)(Q2))
               AND
               (comp_matrix AND comp_inverse IMPLIES
                 (R2 * Q2 = Id(pn) AND
                   Q2 * R2 = Id(pn) AND
                    is_simple_prod?(pn, FALSE, FALSE)(R2)))
                AND det(S2) = det(S))}" matrix_upper_triang nil)
    (numfield nonempty-type-eq-decl nil number_fields nil)
    (- const-decl "[numfield, numfield -> numfield]" number_fields
       nil))
   nil))
 (diag_det_zero_row 0
  (diag_det_zero_row-1 nil 3615715272
   ("" (skeep)
    (("" (name "DD" "diag(comp_matrix, comp_inverse, S)")
      (("" (replaces -1)
        (("" (typepred "DD")
          (("" (assert)
            (("" (hide -6)
              (("" (name "AA" "DD`ans")
                (("" (replaces -1)
                  (("" (name "QQ" "DD`multip")
                    (("" (replaces -1)
                      (("" (assert)
                        (("" (lemma "det_upper_triangular_zero")
                          (("" (inst - "AA")
                            (("" (assert)
                              ((""
                                (case
                                 "EXISTS (i): i<rows(AA) AND entry(AA)(i,i)=0 AND (FORALL (j): j<rows(AA) AND j>i IMPLIES entry(AA)(j,j)/=0)")
                                (("1"
                                  (hide -2)
                                  (("1"
                                    (skeep -1)
                                    (("1"
                                      (inst + "i")
                                      (("1"
                                        (assert)
                                        (("1"
                                          (skeep 2)
                                          (("1"
                                            (case "NOT j < rows(S)")
                                            (("1"
                                              (assert)
                                              (("1"
                                                (rewrite
                                                 "entry_eq_0"
                                                 3)
                                                nil
                                                nil))
                                              nil)
                                             ("2"
                                              (assert)
                                              (("2"
                                                (case "j = i")
                                                (("1" (assertnil nil)
                                                 ("2"
                                                  (case "j < i")
                                                  (("1"
                                                    (expand
                                                     "upper_triangular?")
                                                    (("1"
                                                      (inst - "i" "j")
                                                      (("1"
                                                        (assert)
                                                        nil
                                                        nil))
                                                      nil))
                                                    nil)
                                                   ("2"
                                                    (inst - "j")
                                                    (("2"
                                                      (assert)
                                                      (("2"
                                                        (flatten)
                                                        (("2"
                                                          (inst
                                                           -
                                                           "i"
                                                           "j")
                                                          (("2"
                                                            (assert)
                                                            nil
                                                            nil))
                                                          nil))
                                                        nil))
                                                      nil))
                                                    nil))
                                                  nil))
                                                nil))
                                              nil))
                                            nil))
                                          nil))
                                        nil))
                                      nil))
                                    nil))
                                  nil)
                                 ("2"
                                  (hide (2 3))
                                  (("2"
                                    (case
                                     "FORALL (k): LET z = rows(AA)-1-k IN (k<=rows(AA)-1 AND (EXISTS (i): i<rows(AA) AND i>=z AND entry(AA)(i,i)=0)) IMPLIES (EXISTS (i): i<rows(AA) AND i>=z AND entry(AA)(i,i)=0 AND (FORALL (j): j<rows(AA) AND j>i IMPLIES entry(AA)(j,j)/=0))")
                                    (("1"
                                      (inst - "rows(AA)-1")
                                      (("1"
                                        (assert)
                                        (("1"
                                          (replace -2)
                                          (("1" (propax) nil nil))
                                          nil))
                                        nil))
                                      nil)
                                     ("2"
                                      (hide 2)
                                      (("2"
                                        (hide -1)
                                        (("2"
                                          (induct "k")
                                          (("1"
                                            (assert)
                                            (("1" (ground) nil nil))
                                            nil)
                                           ("2" (assertnil nil)
                                           ("3"
                                            (assert)
                                            (("3" (ground) nil nil))
                                            nil)
                                           ("4" (assertnil nil)
                                           ("5"
                                            (skosimp*)
                                            (("5"
                                              (inst + "i!1")
                                              (("5"
                                                (assert)
                                                (("5"
                                                  (skosimp*)
                                                  (("5"
                                                    (assert)
                                                    nil
                                                    nil))
                                                  nil))
                                                nil))
                                              nil))
                                            nil)
                                           ("6"
                                            (skolem 1 "k")
                                            (("6"
                                              (assert)
                                              (("6"
                                                (flatten)
                                                (("6"
                                                  (assert)
                                                  (("6"
                                                    (skosimp*)
                                                    (("6"
                                                      (case
                                                       "NOT i!1 = rows(AA)-2-k")
                                                      (("1"
                                                        (split -1)
                                                        (("1"
                                                          (assert)
                                                          (("1"
                                                            (skosimp*)
                                                            (("1"
                                                              (inst
                                                               +
                                                               "i!2")
                                                              (("1"
                                                                (assert)
                                                                nil
                                                                nil))
                                                              nil))
                                                            nil))
                                                          nil)
                                                         ("2"
                                                          (hide 3)
                                                          (("2"
                                                            (inst
                                                             +
                                                             "i!1")
                                                            (("2"
                                                              (assert)
                                                              nil
                                                              nil))
                                                            nil))
                                                          nil))
                                                        nil)
                                                       ("2"
                                                        (case
                                                         "(EXISTS (i):
                        i < rows(AA) AND i >= rows(AA) - 1 - k AND entry(AA)(i, i) = 0)")
                                                        (("1"
                                                          (assert)
                                                          (("1"
                                                            (replace
                                                             -1)
                                                            (("1"
                                                              (assert)
                                                              (("1"
                                                                (skosimp
                                                                 -3)
                                                                (("1"
                                                                  (inst
                                                                   +
                                                                   "i!2")
                                                                  (("1"
                                                                    (assert)
                                                                    nil
                                                                    nil))
                                                                  nil))
                                                                nil))
                                                              nil))
                                                            nil))
                                                          nil)
                                                         ("2"
                                                          (inst
                                                           2
                                                           "i!1")
                                                          (("2"
                                                            (assert)
                                                            (("2"
                                                              (skosimp
                                                               2)
                                                              (("2"
                                                                (inst
                                                                 +
                                                                 "j!1")
                                                                (("2"
                                                                  (assert)
                                                                  nil
                                                                  nil))
                                                                nil))
                                                              nil))
                                                            nil))
                                                          nil))
                                                        nil))
                                                      nil))
                                                    nil))
                                                  nil))
                                                nil))
                                              nil))
                                            nil))
                                          nil))
                                        nil))
                                      nil))
                                    nil))
                                  nil))
                                nil))
                              nil))
                            nil))
                          nil))
                        nil))
                      nil))
                    nil))
                  nil))
                nil))
              nil))
            nil))
          nil))
        nil))
      nil))
    nil)
   ((diag const-decl "{SGI:
   [# ans: SquareMatrix(rows(S)),
      multip: SquareMatrix(rows(S)),
      inv: SquareMatrix(rows(S)) #] |
              upper_triangular?(SGI`ans)
          AND (FORALL (k, p):
                 k < rows(S) AND p < rows(S) AND entry(SGI`ans)(k, p) /= 0
                  IMPLIES (k = p OR (k < p AND entry(SGI`ans)(p, p) = 0)))
          AND (comp_matrix IMPLIES
                SGI`multip * S = SGI`ans AND
                 is_simple_prod?(rows(S), FALSE, FALSE)(SGI`multip))
          AND (comp_matrix AND comp_inverse IMPLIES
                (SGI`inv * SGI`multip = Id(rows(S)) AND
                  SGI`multip * SGI`inv = Id(rows(S)) AND
                   is_simple_prod?(rows(S), FALSE, FALSE)(SGI`inv)))
          AND det(SGI`ans) = det(S)
          AND (det(S) /= 0 IFF
                (FORALL (k, p):
                   k < rows(S) AND p < rows(S) IMPLIES
                    (entry(SGI`ans)(k, p) /= 0 IFF k = p)))}"
     matrix_diag nil)
    (IFF const-decl "[bool, bool -> bool]" booleans nil)
    (det def-decl "real" matrix_props nil)
    (Id const-decl "{M: SquareMatrix(pm) |
         (FORALL (i, j):
            entry(M)(i, j) = IF i < pm AND i = j THEN 1 ELSE 0 ENDIF)
          AND
          (FORALL (pn: posnat, N: MatrixMN(pm, pn)): M * N = N) AND
           (FORALL (pn: posnat, N: MatrixMN(pn, pm)): N * M = N)}"
     matrices nil)
    (IF const-decl "[boolean, T, T -> T]" if_def nil)
    (FALSE const-decl "bool" booleans nil)
    (is_simple_prod? const-decl "bool" matrix_det nil)
    (posnat nonempty-type-eq-decl nil integers nil)
    (nonneg_int nonempty-type-eq-decl nil integers nil)
    (* const-decl "{A: MatrixMN(rows(M), columns(N)) |
         FORALL (i, j): entry(A)(i, j) = row(M)(i) * col(N)(j)}"
       matrices nil)
    (col def-decl "VectorN(rows(M))" matrices nil)
    (VectorN type-eq-decl nil matrices nil)
    (row const-decl "Vector" matrices nil)
    (* const-decl "real" matrices nil)
    (Vector type-eq-decl nil matrices nil)
    (MatrixMN type-eq-decl nil matrices nil)
    (entry const-decl "real" matrices nil)
    (/= const-decl "boolean" notequal nil)
    (IMPLIES const-decl "[bool, bool -> bool]" booleans nil)
    (upper_triangular? const-decl "bool" matrix_det nil)
    (Square type-eq-decl nil matrices nil)
    (PosFullMatrix type-eq-decl nil matrices nil)
    (columns def-decl "{c: nat |
         (FORALL (i: below(length(M))): length(nth(M, i)) <= c) AND
          (null?(M) AND c = 0 OR
            (EXISTS (i: below(length(M))): length(nth(M, i)) = c))}"
             matrices nil)
    (<= const-decl "bool" reals nil) (> const-decl "bool" reals nil)
    (FullMatrix type-eq-decl nil matrices nil)
    (nth def-decl "T" list_props nil)
    (below type-eq-decl nil nat_types nil)
    (= const-decl "[T, T -> boolean]" equalities nil)
    (below type-eq-decl nil naturalnumbers nil)
    (length def-decl "nat" list_props nil)
    (< const-decl "bool" reals nil)
    (null? adt-recognizer-decl "[list -> boolean]" list_adt nil)
    (OR const-decl "[bool, bool -> bool]" booleans nil)
    (rows const-decl "nat" matrices nil)
    (nat nonempty-type-eq-decl nil naturalnumbers nil)
    (>= const-decl "bool" reals nil)
    (int nonempty-type-eq-decl nil integers nil)
    (integer_pred const-decl "[rational -> boolean]" integers nil)
    (rational nonempty-type-from-decl nil rationals nil)
    (rational_pred const-decl "[real -> boolean]" rationals nil)
    (real nonempty-type-from-decl nil reals nil)
    (Matrix type-eq-decl nil matrices nil)
    (real_pred const-decl "[number_field -> boolean]" reals nil)
    (number_field nonempty-type-from-decl nil number_fields nil)
    (number_field_pred const-decl "[number -> boolean]" number_fields
     nil)
    (AND const-decl "[bool, bool -> bool]" booleans nil)
    (every adt-def-decl "boolean" list_adt nil)
    (PRED type-eq-decl nil defined_types nil)
    (bool nonempty-type-eq-decl nil booleans nil)
    (boolean nonempty-type-decl nil booleans nil)
    (list type-decl nil list_adt nil)
    (number nonempty-type-decl nil numbers nil)
    (SquareMatrix type-eq-decl nil matrices nil)
    (NOT const-decl "[bool -> bool]" booleans nil)
    (det_upper_triangular_zero formula-decl nil matrix_det nil)
    (pred type-eq-decl nil defined_types nil)
    (nat_induction formula-decl nil naturalnumbers nil)
    (real_le_is_total_order name-judgement "(total_order?[real])"
     real_props nil)
    (posint_plus_nnint_is_posint application-judgement "posint"
     integers nil)
    (- const-decl "[numfield, numfield -> numfield]" number_fields nil)
    (numfield nonempty-type-eq-decl nil number_fields nil)
    (int_minus_int_is_int application-judgement "int" integers nil)
    (real_gt_is_strict_total_order name-judgement
     "(strict_total_order?[real])" real_props nil)
    (entry_eq_0 formula-decl nil matrices nil)
    (real_ge_is_total_order name-judgement "(total_order?[real])"
     real_props nil)
    (real_lt_is_strict_total_order name-judgement
     "(strict_total_order?[real])" real_props nil)
    (mult_full application-judgement "FullMatrix" matrices nil))
   shostak))
 (det_mult 0
  (det_mult-2 nil 3615720345
   ("" (skeep)
    (("" (name "DD" "diag(true, true, S)")
      (("" (label "DDname" -1)
        (("" (typepred "DD")
          (("" (name "QQ" "DD`multip")
            (("" (replaces -1)
              (("" (assert)
                (("" (name "AA" "DD`ans")
                  (("" (lemma "diag_det_zero_row")
                    (("" (inst - "S" "true" "true")
                      (("" (replace -2)
                        (("" (assert)
                          (("" (replace "DDname")
                            (("" (replace -2)
                              ((""
                                (label "sz" -1)
                                ((""
                                  (hide "sz")
                                  ((""
                                    (hide -1)
                                    ((""
                                      (name "II" "DD`inv")
                                      ((""
                                        (replaces -1)
                                        ((""
                                          (case "NOT S = II*AA")
                                          (("1"
                                            (case
                                             "NOT II*(QQ*S)=II*AA")
                                            (("1" (assertnil nil)
                                             ("2"
                                              (rewrite
                                               "matrix_mult_assoc"
                                               -1
                                               :dir
                                               rl)
                                              (("1"
                                                (replace -6)
                                                (("1"
                                                  (rewrite
                                                   "mult_Id_left")
                                                  nil
                                                  nil))
                                                nil)
                                               ("2"
                                                (typepred "QQ")
                                                (("2"
                                                  (expand "rows")
                                                  (("2"
                                                    (expand "length")
                                                    (("2"
                                                      (assert)
                                                      nil
                                                      nil))
                                                    nil))
                                                  nil))
                                                nil))
                                              nil))
                                            nil)
                                           ("2"
                                            (case
                                             "det(AA*R)=det(AA)*det(R)")
                                            (("1"
                                              (replace -2 1)
                                              (("1"
                                                (rewrite
                                                 "matrix_mult_assoc"
                                                 1)
                                                (("1"
                                                  (rewrite
                                                   "det_mult_simple_prod_left"
                                                   1)
                                                  (("1"
                                                    (lemma
                                                     "det_mult_simple_prod_left")
                                                    (("1"
                                                      (inst
                                                       -
                                                       "rows(S)"
                                                       "II"
                                                       "AA")
                                                      (("1"
                                                        (assert)
                                                        nil
                                                        nil))
                                                      nil))
                                                    nil)
                                                   ("2"
                                                    (rewrite
                                                     "rows_mult")
                                                    (("2"
                                                      (rewrite
                                                       "columns_mult")
                                                      (("1"
                                                        (assert)
                                                        nil
                                                        nil)
                                                       ("2"
                                                        (typepred "AA")
                                                        (("2"
                                                          (expand
                                                           "rows")
                                                          (("2"
                                                            (expand
                                                             "length")
                                                            (("2"
                                                              (assert)
                                                              nil
                                                              nil))
                                                            nil))
                                                          nil))
                                                        nil))
                                                      nil))
                                                    nil))
                                                  nil)
                                                 ("2"
                                                  (typepred "AA")
                                                  (("2"
                                                    (expand "rows")
                                                    (("2"
                                                      (expand "length")
                                                      (("2"
                                                        (assert)
                                                        nil
                                                        nil))
                                                      nil))
                                                    nil))
                                                  nil))
                                                nil))
                                              nil)
                                             ("2"
                                              (hide 2)
                                              (("2"
                                                (case "det(AA)=0")
                                                (("1"
                                                  (replace -1)
                                                  (("1"
                                                    (assert)
                                                    (("1"
                                                      (hide 2)
                                                      (("1"
                                                        (reveal "sz")
                                                        (("1"
                                                          (assert)
                                                          (("1"
                                                            (lemma
                                                             "det_replace_row_scal")
                                                            (("1"
                                                              (skeep
                                                               -2)
                                                              (("1"
                                                                (inst
                                                                 -
                                                                 "AA*R"
                                                                 "i"
                                                                 "0"
                                                                 "zero(rows(S))")
                                                                (("1"
                                                                  (case
                                                                   "AA*R = replace_row(i, 0 * zero(rows(S)))(AA * R)")
                                                                  (("1"
                                                                    (assert)
                                                                    (("1"
                                                                      (rewrite
                                                                       "columns_mult"
                                                                       1)
                                                                      (("1"
                                                                        (assert)
                                                                        (("1"
                                                                          (rewrite
                                                                           "rows_mult"
                                                                           1)
                                                                          (("1"
                                                                            (assert)
                                                                            nil
                                                                            nil))
                                                                          nil))
                                                                        nil)
                                                                       ("2"
                                                                        (typepred
                                                                         "AA")
                                                                        (("2"
                                                                          (expand
                                                                           "rows")
                                                                          (("2"
                                                                            (expand
                                                                             "length")
                                                                            (("2"
                                                                              (assert)
                                                                              nil
                                                                              nil))
                                                                            nil))
                                                                          nil))
                                                                        nil))
                                                                      nil))
                                                                    nil)
                                                                   ("2"
                                                                    (assert)
                                                                    (("2"
                                                                      (hide
                                                                       -1)
                                                                      (("2"
                                                                        (rewrite
                                                                         "full_matrix_eq"
                                                                         1)
                                                                        (("2"
                                                                          (skosimp*)
                                                                          (("2"
                                                                            (case
                                                                             "NOT (i!1 < rows(S) AND j!1 < rows(S))")
                                                                            (("1"
                                                                              (typepred
                                                                               "i!1")
                                                                              (("1"
                                                                                (typepred
                                                                                 "j!1")
                                                                                (("1"
                                                                                  (rewrite
                                                                                   "columns_mult")
                                                                                  (("1"
                                                                                    (rewrite
                                                                                     "rows_mult")
                                                                                    (("1"
                                                                                      (assert)
                                                                                      nil
                                                                                      nil))
                                                                                    nil)
                                                                                   ("2"
                                                                                    (typepred
                                                                                     "AA")
                                                                                    (("2"
                                                                                      (expand
                                                                                       "rows")
                                                                                      (("2"
                                                                                        (expand
                                                                                         "length")
                                                                                        (("2"
                                                                                          (assert)
                                                                                          nil
                                                                                          nil))
                                                                                        nil))
                                                                                      nil))
                                                                                    nil))
                                                                                  nil))
                                                                                nil))
                                                                              nil)
                                                                             ("2"
                                                                              (flatten)
                                                                              (("2"
                                                                                (rewrite
                                                                                 "entry_replace_row")
                                                                                (("1"
                                                                                  (lift-if)
                                                                                  (("1"
                                                                                    (split
                                                                                     1)
                                                                                    (("1"
                                                                                      (flatten)
                                                                                      (("1"
                                                                                        (replace
                                                                                         -1)
                                                                                        (("1"
                                                                                          (assert)
                                                                                          (("1"
                                                                                            (rewrite
                                                                                             "access_scal")
                                                                                            (("1"
                                                                                              (assert)
                                                                                              (("1"
                                                                                                (case
                                                                                                 "FORALL (rrrrr:real): 0*rrrrr=0")
                                                                                                (("1"
                                                                                                  (rewrite
                                                                                                   -1)
                                                                                                  (("1"
                                                                                                    (hide
                                                                                                     -1)
                                                                                                    (("1"
                                                                                                      (rewrite
                                                                                                       "entry_mult"
                                                                                                       1)
                                                                                                      (("1"
                                                                                                        (expand
                                                                                                         "*"
                                                                                                         +)
                                                                                                        (("1"
                                                                                                          (rewrite
                                                                                                           "dot_eq_sigma"
                                                                                                           1)
                                                                                                          (("1"
                                                                                                            (rewrite
                                                                                                             "sigma_restrict_eq_0")
                                                                                                            (("1"
                                                                                                              (hide
                                                                                                               2)
                                                                                                              (("1"
                                                                                                                (skosimp*)
                                                                                                                (("1"
                                                                                                                  (rewrite
                                                                                                                   "access_row")
                                                                                                                  (("1"
                                                                                                                    (inst
                                                                                                                     -
                                                                                                                     "i!2")
                                                                                                                    (("1"
                                                                                                                      (assert)
                                                                                                                      nil
                                                                                                                      nil))
                                                                                                                    nil))
                                                                                                                  nil))
                                                                                                                nil))
                                                                                                              nil))
                                                                                                            nil))
                                                                                                          nil))
                                                                                                        nil))
                                                                                                      nil))
                                                                                                    nil))
                                                                                                  nil)
                                                                                                 ("2"
                                                                                                  (assert)
                                                                                                  nil
                                                                                                  nil))
                                                                                                nil))
                                                                                              nil))
                                                                                            nil))
                                                                                          nil))
                                                                                        nil))
                                                                                      nil)
                                                                                     ("2"
                                                                                      (propax)
                                                                                      nil
                                                                                      nil))
                                                                                    nil))
                                                                                  nil)
                                                                                 ("2"
                                                                                  (rewrite
                                                                                   "columns_mult")
                                                                                  (("1"
                                                                                    (rewrite
                                                                                     "length_scal_vect")
                                                                                    (("1"
                                                                                      (assert)
                                                                                      nil
                                                                                      nil))
                                                                                    nil)
                                                                                   ("2"
                                                                                    (typepred
                                                                                     "AA")
                                                                                    (("2"
                                                                                      (expand
                                                                                       "rows")
                                                                                      (("2"
                                                                                        (expand
                                                                                         "length")
                                                                                        (("2"
                                                                                          (assert)
                                                                                          nil
                                                                                          nil))
                                                                                        nil))
                                                                                      nil))
                                                                                    nil))
                                                                                  nil))
                                                                                nil))
                                                                              nil))
                                                                            nil))
                                                                          nil))
                                                                        nil))
                                                                      nil))
                                                                    nil)
                                                                   ("3"
                                                                    (rewrite
                                                                     "columns_mult"
                                                                     1)
                                                                    (("1"
                                                                      (rewrite
                                                                       "rows_mult"
                                                                       1)
                                                                      (("1"
                                                                        (assert)
                                                                        nil
                                                                        nil))
                                                                      nil)
                                                                     ("2"
                                                                      (typepred
                                                                       "AA")
                                                                      (("2"
                                                                        (expand
                                                                         "rows")
                                                                        (("2"
                                                                          (expand
                                                                           "length")
                                                                          (("2"
                                                                            (assert)
                                                                            nil
                                                                            nil))
                                                                          nil))
                                                                        nil))
                                                                      nil))
                                                                    nil))
                                                                  nil)
                                                                 ("2"
                                                                  (rewrite
                                                                   "rows_mult")
                                                                  (("2"
                                                                    (rewrite
                                                                     "columns_mult")
                                                                    (("1"
                                                                      (assert)
                                                                      nil
                                                                      nil)
                                                                     ("2"
                                                                      (typepred
                                                                       "AA")
                                                                      (("2"
                                                                        (expand
                                                                         "rows")
                                                                        (("2"
                                                                          (expand
                                                                           "length")
                                                                          (("2"
                                                                            (assert)
                                                                            nil
                                                                            nil))
                                                                          nil))
                                                                        nil))
                                                                      nil))
                                                                    nil))
                                                                  nil))
                                                                nil))
                                                              nil))
                                                            nil))
                                                          nil))
                                                        nil))
                                                      nil))
                                                    nil))
                                                  nil)
                                                 ("2"
                                                  (name
                                                   "isdiag"
                                                   "LAMBDA (k): (LAMBDA (SQ): (FORALL (i): i<rows(SQ) AND i>=k IMPLIES entry(SQ)(i,i)=1) AND (FORALL (i,j): i<rows(SQ) AND j<rows(SQ) AND entry(SQ)(i,j)/=0 IMPLIES i=j))")
                                                  (("2"
                                                    (case
                                                     "FORALL (k,SQ,DQ): k<=rows(SQ) AND isdiag(k)(SQ) AND rows(SQ)=rows(DQ) IMPLIES det(SQ*DQ)=det(SQ)*det(DQ)")
                                                    (("1"
                                                      (inst
                                                       -
                                                       "rows(AA)"
                                                       "AA"
                                                       "R")
                                                      (("1"
                                                        (assert)
                                                        (("1"
                                                          (hide -1)
                                                          (("1"
                                                            (expand
                                                             "isdiag")
                                                            (("1"
                                                              (split 1)
                                                              (("1"
                                                                (skosimp*)
                                                                (("1"
                                                                  (assert)
                                                                  nil
                                                                  nil))
                                                                nil)
                                                               ("2"
                                                                (skeep)
                                                                (("2"
                                                                  (lemma
                                                                   "det_upper_triangular_zero")
                                                                  (("2"
                                                                    (inst
                                                                     -
                                                                     "AA")
                                                                    (("2"
                                                                      (assert)
                                                                      (("2"
                                                                        (inst
                                                                         -
                                                                         "i"
                                                                         "j")
                                                                        (("2"
                                                                          (assert)
                                                                          (("2"
                                                                            (flatten)
                                                                            (("2"
                                                                              (inst
                                                                               +
                                                                               "j")
                                                                              (("2"
                                                                                (assert)
                                                                                nil
                                                                                nil))
                                                                              nil))
                                                                            nil))
                                                                          nil))
                                                                        nil))
                                                                      nil))
                                                                    nil))
                                                                  nil))
                                                                nil))
                                                              nil))
                                                            nil))
                                                          nil))
                                                        nil))
                                                      nil)
                                                     ("2"
                                                      (hide-all-but 1)
                                                      (("2"
                                                        (induct "k")
                                                        (("1"
                                                          (skeep)
                                                          (("1"
                                                            (case
                                                             "SQ = Id(rows(SQ))")
                                                            (("1"
                                                              (replace
                                                               -1)
                                                              (("1"
                                                                (rewrite
                                                                 "mult_Id_left")
                                                                (("1"
                                                                  (rewrite
                                                                   "det_Id")
                                                                  (("1"
                                                                    (assert)
                                                                    nil
                                                                    nil))
                                                                  nil))
                                                                nil))
                                                              nil)
                                                             ("2"
                                                              (rewrite
                                                               "full_matrix_eq")
                                                              (("2"
                                                                (assert)
                                                                (("2"
                                                                  (skeep)
                                                                  (("2"
                                                                    (typepred
                                                                     "i")
                                                                    (("2"
                                                                      (typepred
                                                                       "j")
                                                                      (("2"
                                                                        (assert)
                                                                        (("2"
                                                                          (rewrite
                                                                           "entry_Id")
                                                                          (("2"
                                                                            (expand
                                                                             "isdiag")
                                                                            (("2"
                                                                              (flatten)
                                                                              (("2"
                                                                                (lift-if)
                                                                                (("2"
                                                                                  (split
                                                                                   1)
                                                                                  (("1"
                                                                                    (flatten)
                                                                                    (("1"
                                                                                      (inst
                                                                                       -
                                                                                       "i"
                                                                                       "j")
                                                                                      (("1"
                                                                                        (assert)
                                                                                        nil
                                                                                        nil))
                                                                                      nil))
                                                                                    nil)
                                                                                   ("2"
                                                                                    (flatten)
                                                                                    (("2"
                                                                                      (inst
                                                                                       -
                                                                                       "i")
                                                                                      (("2"
                                                                                        (assert)
                                                                                        nil
                                                                                        nil))
                                                                                      nil))
                                                                                    nil))
                                                                                  nil))
                                                                                nil))
                                                                              nil))
                                                                            nil))
                                                                          nil))
                                                                        nil))
                                                                      nil))
                                                                    nil))
                                                                  nil))
                                                                nil))
                                                              nil))
                                                            nil))
                                                          nil)
                                                         ("2"
                                                          (skeep)
                                                          (("2"
                                                            (assert)
                                                            (("2"
                                                              (skeep)
                                                              (("2"
                                                                (assert)
                                                                (("2"
                                                                  (name
                                                                   "rr"
                                                                   "entry(SQ)(j,j)")
                                                                  (("2"
                                                                    (name
                                                                     "newSQ"
                                                                     "form_matrix(lambda (k,p): IF k=p AND k<j THEN entry(SQ)(k,k) ELSIF k=p THEN 1 ELSE 0 ENDIF,rows(SQ),columns(SQ))")
                                                                    (("2"
                                                                      (case
                                                                       "SQ = Esr(rows(SQ))(j,rr)*newSQ")
                                                                      (("1"
                                                                        (replace
                                                                         -1
                                                                         +)
                                                                        (("1"
                                                                          (rewrite
                                                                           "matrix_mult_assoc")
                                                                          (("1"
                                                                            (rewrite
                                                                             "mult_Esr_left")
                                                                            (("1"
                                                                              (rewrite
                                                                               "mult_Esr_left")
                                                                              (("1"
                                                                                (rewrite
                                                                                 "det_replace_row_scal")
                                                                                (("1"
                                                                                  (rewrite
                                                                                   "det_replace_row_scal")
                                                                                  (("1"
                                                                                    (rewrite
                                                                                     "replace_row_id")
                                                                                    (("1"
                                                                                      (rewrite
                                                                                       "replace_row_id")
                                                                                      (("1"
                                                                                        (inst
                                                                                         -
                                                                                         "newSQ"
                                                                                         "DQ")
                                                                                        (("1"
                                                                                          (assert)
                                                                                          (("1"
                                                                                            (hide
                                                                                             2)
                                                                                            (("1"
                                                                                              (expand
                                                                                               "isdiag")
                                                                                              (("1"
                                                                                                (flatten)
                                                                                                (("1"
                                                                                                  (case
                                                                                                   "rows(newSQ)=rows(SQ) AND columns(newSQ)=columns(SQ)")
                                                                                                  (("1"
                                                                                                    (flatten)
                                                                                                    (("1"
                                                                                                      (assert)
                                                                                                      (("1"
                                                                                                        (split
                                                                                                         +)
                                                                                                        (("1"
                                                                                                          (skeep)
                                                                                                          (("1"
                                                                                                            (expand
                                                                                                             "newSQ"
                                                                                                             +)
                                                                                                            (("1"
                                                                                                              (rewrite
                                                                                                               "entry_form_matrix")
                                                                                                              (("1"
                                                                                                                (assert)
                                                                                                                nil
                                                                                                                nil))
                                                                                                              nil))
                                                                                                            nil))
                                                                                                          nil)
                                                                                                         ("2"
                                                                                                          (skosimp*)
                                                                                                          (("2"
                                                                                                            (expand
                                                                                                             "newSQ"
                                                                                                             1)
                                                                                                            (("2"
                                                                                                              (rewrite
                                                                                                               "entry_form_matrix")
                                                                                                              (("2"
                                                                                                                (assert)
                                                                                                                nil
                                                                                                                nil))
                                                                                                              nil))
                                                                                                            nil))
                                                                                                          nil))
                                                                                                        nil))
                                                                                                      nil))
                                                                                                    nil)
                                                                                                   ("2"
                                                                                                    (hide
                                                                                                     2)
                                                                                                    (("2"
                                                                                                      (expand
                                                                                                       "newSQ")
                                                                                                      (("2"
                                                                                                        (propax)
                                                                                                        nil
                                                                                                        nil))
                                                                                                      nil))
                                                                                                    nil))
                                                                                                  nil))
                                                                                                nil))
                                                                                              nil))
                                                                                            nil))
                                                                                          nil)
                                                                                         ("2"
                                                                                          (assert)
                                                                                          nil
                                                                                          nil))
                                                                                        nil))
                                                                                      nil)
                                                                                     ("2"
                                                                                      (rewrite
                                                                                       "rows_mult"
                                                                                       1)
                                                                                      (("2"
                                                                                        (assert)
                                                                                        nil
                                                                                        nil))
                                                                                      nil))
                                                                                    nil)
                                                                                   ("2"
                                                                                    (rewrite
                                                                                     "length_row")
                                                                                    nil
                                                                                    nil))
                                                                                  nil)
                                                                                 ("2"
                                                                                  (rewrite
                                                                                   "length_row")
                                                                                  (("2"
                                                                                    (rewrite
                                                                                     "columns_mult")
                                                                                    (("1"
                                                                                      (rewrite
                                                                                       "rows_mult")
                                                                                      (("1"
                                                                                        (assert)
                                                                                        nil
                                                                                        nil))
                                                                                      nil)
                                                                                     ("2"
                                                                                      (typepred
                                                                                       "newSQ")
                                                                                      (("2"
                                                                                        (expand
                                                                                         "rows")
                                                                                        (("2"
                                                                                          (propax)
                                                                                          nil
                                                                                          nil))
                                                                                        nil))
                                                                                      nil))
                                                                                    nil))
                                                                                  nil)
                                                                                 ("3"
                                                                                  (rewrite
                                                                                   "rows_mult")
                                                                                  (("3"
                                                                                    (assert)
                                                                                    nil
                                                                                    nil))
                                                                                  nil))
                                                                                nil)
                                                                               ("2"
                                                                                (rewrite
                                                                                 "rows_mult")
                                                                                (("2"
                                                                                  (assert)
                                                                                  nil
                                                                                  nil))
                                                                                nil)
                                                                               ("3"
                                                                                (rewrite
                                                                                 "rows_mult")
                                                                                (("3"
                                                                                  (rewrite
                                                                                   "columns_mult")
                                                                                  (("1"
                                                                                    (assert)
                                                                                    nil
                                                                                    nil)
                                                                                   ("2"
                                                                                    (typepred
                                                                                     "newSQ")
                                                                                    (("2"
                                                                                      (lemma
                                                                                       "rows_form_matrix")
                                                                                      (("2"
                                                                                        (inst?)
                                                                                        (("2"
                                                                                          (expand
                                                                                           "rows"
                                                                                           -1
                                                                                           1)
                                                                                          (("2"
                                                                                            (assert)
                                                                                            (("2"
                                                                                              (case
                                                                                               "NOT rows(SQ) = 0")
                                                                                              (("1"
                                                                                                (replace
                                                                                                 -8)
                                                                                                (("1"
                                                                                                  (expand
                                                                                                   "length"
                                                                                                   -3)
                                                                                                  (("1"
                                                                                                    (assert)
                                                                                                    nil
                                                                                                    nil))
                                                                                                  nil))
                                                                                                nil)
                                                                                               ("2"
                                                                                                (assert)
                                                                                                nil
                                                                                                nil))
                                                                                              nil))
                                                                                            nil))
                                                                                          nil))
                                                                                        nil))
                                                                                      nil))
                                                                                    nil))
                                                                                  nil))
                                                                                nil))
                                                                              nil)
                                                                             ("2"
                                                                              (expand
                                                                               "newSQ")
                                                                              (("2"
                                                                                (rewrite
                                                                                 "rows_form_matrix")
                                                                                nil
                                                                                nil))
                                                                              nil)
                                                                             ("3"
                                                                              (split
                                                                               1)
                                                                              (("1"
                                                                                (assert)
                                                                                (("1"
                                                                                  (expand
                                                                                   "newSQ"
                                                                                   1)
                                                                                  (("1"
                                                                                    (rewrite
                                                                                     "rows_form_matrix")
                                                                                    (("1"
                                                                                      (assert)
                                                                                      nil
                                                                                      nil))
                                                                                    nil))
                                                                                  nil))
                                                                                nil)
                                                                               ("2"
                                                                                (expand
                                                                                 "newSQ"
                                                                                 1)
                                                                                (("2"
                                                                                  (assert)
                                                                                  (("2"
                                                                                    (lemma
                                                                                     "columns_form_matrix")
                                                                                    (("2"
                                                                                      (inst?)
                                                                                      (("2"
                                                                                        (assert)
                                                                                        nil
                                                                                        nil))
                                                                                      nil))
                                                                                    nil))
                                                                                  nil))
                                                                                nil))
                                                                              nil))
                                                                            nil)
                                                                           ("2"
                                                                            (typepred
                                                                             "newSQ")
                                                                            (("2"
                                                                              (lemma
                                                                               "rows_form_matrix")
                                                                              (("2"
                                                                                (inst?)
                                                                                (("2"
                                                                                  (expand
                                                                                   "length"
                                                                                   -3
                                                                                   1)
                                                                                  (("2"
                                                                                    (assert)
                                                                                    nil
                                                                                    nil))
                                                                                  nil))
                                                                                nil))
                                                                              nil))
                                                                            nil))
                                                                          nil))
                                                                        nil)
                                                                       ("2"
                                                                        (hide
                                                                         -1)
                                                                        (("2"
                                                                          (rewrite
                                                                           "full_matrix_eq"
                                                                           1)
                                                                          (("2"
                                                                            (assert)
                                                                            (("2"
                                                                              (split
                                                                               1)
                                                                              (("1"
                                                                                (rewrite
                                                                                 "rows_mult")
                                                                                (("1"
                                                                                  (rewrite
                                                                                   "rows_Esr")
                                                                                  nil
                                                                                  nil))
                                                                                nil)
                                                                               ("2"
                                                                                (rewrite
                                                                                 "columns_mult")
                                                                                (("1"
                                                                                  (expand
                                                                                   "newSQ"
                                                                                   1)
                                                                                  (("1"
                                                                                    (lemma
                                                                                     "columns_form_matrix")
                                                                                    (("1"
                                                                                      (inst?)
                                                                                      (("1"
                                                                                        (assert)
                                                                                        nil
                                                                                        nil))
                                                                                      nil))
                                                                                    nil))
                                                                                  nil)
                                                                                 ("2"
                                                                                  (typepred
                                                                                   "Esr(rows(SQ))(j,rr)")
                                                                                  (("2"
                                                                                    (expand
                                                                                     "rows"
                                                                                     -3
                                                                                     1)
                                                                                    (("2"
                                                                                      (expand
                                                                                       "length")
                                                                                      (("2"
                                                                                        (assert)
                                                                                        nil
                                                                                        nil))
                                                                                      nil))
                                                                                    nil))
                                                                                  nil))
                                                                                nil)
                                                                               ("3"
                                                                                (skosimp*)
                                                                                (("3"
                                                                                  (rewrite
                                                                                   "mult_Esr_left")
                                                                                  (("1"
                                                                                    (rewrite
                                                                                     "entry_replace_row")
                                                                                    (("1"
                                                                                      (rewrite
                                                                                       "access_scal")
                                                                                      (("1"
                                                                                        (lift-if)
                                                                                        (("1"
                                                                                          (split
                                                                                           1)
                                                                                          (("1"
                                                                                            (flatten)
                                                                                            (("1"
                                                                                              (replace
                                                                                               -2)
                                                                                              (("1"
                                                                                                (assert)
                                                                                                (("1"
                                                                                                  (rewrite
                                                                                                   "access_row")
                                                                                                  (("1"
                                                                                                    (expand
                                                                                                     "newSQ"
                                                                                                     1)
                                                                                                    (("1"
                                                                                                      (rewrite
                                                                                                       "entry_form_matrix")
                                                                                                      (("1"
                                                                                                        (assert)
                                                                                                        (("1"
                                                                                                          (copy
                                                                                                           -6)
                                                                                                          (("1"
                                                                                                            (expand
                                                                                                             "isdiag"
                                                                                                             -1)
                                                                                                            (("1"
                                                                                                              (flatten)
                                                                                                              (("1"
                                                                                                                (lift-if)
                                                                                                                (("1"
                                                                                                                  (split
                                                                                                                   1)
                                                                                                                  (("1"
                                                                                                                    (flatten)
                                                                                                                    (("1"
                                                                                                                      (replace
                                                                                                                       -1
                                                                                                                       :dir
                                                                                                                       rl)
                                                                                                                      (("1"
                                                                                                                        (assert)
                                                                                                                        nil
                                                                                                                        nil))
                                                                                                                      nil))
                                                                                                                    nil)
                                                                                                                   ("2"
                                                                                                                    (flatten)
                                                                                                                    (("2"
                                                                                                                      (inst
                                                                                                                       -
                                                                                                                       "j"
                                                                                                                       "j!1")
                                                                                                                      (("2"
                                                                                                                        (assert)
                                                                                                                        nil
                                                                                                                        nil))
                                                                                                                      nil))
                                                                                                                    nil))
                                                                                                                  nil))
                                                                                                                nil))
                                                                                                              nil))
                                                                                                            nil))
                                                                                                          nil))
                                                                                                        nil))
                                                                                                      nil))
                                                                                                    nil))
                                                                                                  nil))
                                                                                                nil))
                                                                                              nil))
                                                                                            nil)
                                                                                           ("2"
                                                                                            (flatten)
                                                                                            (("2"
                                                                                              (expand
                                                                                               "newSQ"
                                                                                               +)
                                                                                              (("2"
                                                                                                (rewrite
                                                                                                 "rows_form_matrix")
                                                                                                (("2"
                                                                                                  (rewrite
                                                                                                   "entry_form_matrix")
                                                                                                  (("2"
                                                                                                    (lift-if)
                                                                                                    (("2"
                                                                                                      (lift-if)
                                                                                                      (("2"
                                                                                                        (lift-if)
                                                                                                        (("2"
                                                                                                          (assert)
                                                                                                          (("2"
                                                                                                            (split
                                                                                                             2)
                                                                                                            (("1"
                                                                                                              (propax)
                                                                                                              nil
                                                                                                              nil)
                                                                                                             ("2"
                                                                                                              (flatten)
                                                                                                              (("2"
                                                                                                                (split
                                                                                                                 2)
                                                                                                                (("1"
                                                                                                                  (flatten)
                                                                                                                  (("1"
                                                                                                                    (replaces
                                                                                                                     -1)
                                                                                                                    (("1"
                                                                                                                      (assert)
                                                                                                                      (("1"
                                                                                                                        (copy
                                                                                                                         -4)
                                                                                                                        (("1"
                                                                                                                          (expand
                                                                                                                           "isdiag"
                                                                                                                           -1)
                                                                                                                          (("1"
                                                                                                                            (flatten)
                                                                                                                            (("1"
                                                                                                                              (inst
                                                                                                                               -
                                                                                                                               "j!1")
                                                                                                                              (("1"
                                                                                                                                (assert)
                                                                                                                                nil
                                                                                                                                nil))
                                                                                                                              nil))
                                                                                                                            nil))
                                                                                                                          nil))
                                                                                                                        nil))
                                                                                                                      nil))
                                                                                                                    nil))
                                                                                                                  nil)
                                                                                                                 ("2"
                                                                                                                  (flatten)
                                                                                                                  (("2"
                                                                                                                    (copy
                                                                                                                     -4)
                                                                                                                    (("2"
                                                                                                                      (expand
                                                                                                                       "isdiag"
                                                                                                                       -1)
                                                                                                                      (("2"
                                                                                                                        (flatten)
                                                                                                                        (("2"
                                                                                                                          (inst
                                                                                                                           -
                                                                                                                           "i!1"
                                                                                                                           "j!1")
                                                                                                                          (("2"
                                                                                                                            (assert)
                                                                                                                            nil
                                                                                                                            nil))
                                                                                                                          nil))
                                                                                                                        nil))
                                                                                                                      nil))
                                                                                                                    nil))
                                                                                                                  nil))
                                                                                                                nil))
                                                                                                              nil))
                                                                                                            nil))
                                                                                                          nil))
                                                                                                        nil))
                                                                                                      nil))
                                                                                                    nil))
                                                                                                  nil))
                                                                                                nil))
                                                                                              nil))
                                                                                            nil))
                                                                                          nil))
                                                                                        nil))
                                                                                      nil)
                                                                                     ("2"
                                                                                      (expand
                                                                                       "newSQ"
                                                                                       1)
                                                                                      (("2"
                                                                                        (lemma
                                                                                         "columns_form_matrix")
                                                                                        (("2"
                                                                                          (inst?)
                                                                                          (("2"
                                                                                            (assert)
                                                                                            (("2"
                                                                                              (replaces
                                                                                               -1)
                                                                                              (("2"
                                                                                                (rewrite
                                                                                                 "length_scal_vect")
                                                                                                (("2"
                                                                                                  (rewrite
                                                                                                   "length_row")
                                                                                                  (("2"
                                                                                                    (rewrite
                                                                                                     "rows_form_matrix")
                                                                                                    (("2"
                                                                                                      (assert)
                                                                                                      nil
                                                                                                      nil))
                                                                                                    nil))
                                                                                                  nil))
                                                                                                nil))
                                                                                              nil))
                                                                                            nil))
                                                                                          nil))
                                                                                        nil))
                                                                                      nil))
                                                                                    nil)
                                                                                   ("2"
                                                                                    (expand
                                                                                     "newSQ"
                                                                                     1)
                                                                                    (("2"
                                                                                      (rewrite
                                                                                       "rows_form_matrix")
                                                                                      nil
                                                                                      nil))
                                                                                    nil)
                                                                                   ("3"
                                                                                    (expand
                                                                                     "newSQ"
                                                                                     1)
                                                                                    (("3"
                                                                                      (rewrite
                                                                                       "rows_form_matrix")
                                                                                      (("3"
                                                                                        (assert)
                                                                                        (("3"
                                                                                          (lemma
                                                                                           "columns_form_matrix")
                                                                                          (("3"
                                                                                            (inst?)
                                                                                            (("3"
                                                                                              (assert)
                                                                                              nil
                                                                                              nil))
                                                                                            nil))
                                                                                          nil))
                                                                                        nil))
                                                                                      nil))
                                                                                    nil))
                                                                                  nil))
                                                                                nil))
                                                                              nil))
                                                                            nil))
                                                                          nil))
                                                                        nil))
                                                                      nil))
                                                                    nil))
                                                                  nil))
                                                                nil))
                                                              nil))
                                                            nil))
                                                          nil))
                                                        nil))
                                                      nil))
                                                    nil))
                                                  nil))
                                                nil))
                                              nil))
                                            nil))
                                          nil))
                                        nil))
                                      nil))
                                    nil))
                                  nil))
                                nil))
                              nil))
                            nil))
                          nil))
                        nil))
                      nil))
                    nil))
                  nil))
                nil))
              nil))
            nil))
          nil))
        nil))
      nil))
    nil)
   ((TRUE const-decl "bool" booleans nil)
    (diag const-decl "{SGI:
   [# ans: SquareMatrix(rows(S)),
      multip: SquareMatrix(rows(S)),
      inv: SquareMatrix(rows(S)) #] |
              upper_triangular?(SGI`ans)
          AND (FORALL (k, p):
                 k < rows(S) AND p < rows(S) AND entry(SGI`ans)(k, p) /= 0
                  IMPLIES (k = p OR (k < p AND entry(SGI`ans)(p, p) = 0)))
          AND (comp_matrix IMPLIES
                SGI`multip * S = SGI`ans AND
                 is_simple_prod?(rows(S), FALSE, FALSE)(SGI`multip))
          AND (comp_matrix AND comp_inverse IMPLIES
                (SGI`inv * SGI`multip = Id(rows(S)) AND
                  SGI`multip * SGI`inv = Id(rows(S)) AND
                   is_simple_prod?(rows(S), FALSE, FALSE)(SGI`inv)))
          AND det(SGI`ans) = det(S)
          AND (det(S) /= 0 IFF
                (FORALL (k, p):
                   k < rows(S) AND p < rows(S) IMPLIES
                    (entry(SGI`ans)(k, p) /= 0 IFF k = p)))}"
     matrix_diag nil)
    (IFF const-decl "[bool, bool -> bool]" booleans nil)
    (det def-decl "real" matrix_props nil)
    (Id const-decl "{M: SquareMatrix(pm) |
         (FORALL (i, j):
            entry(M)(i, j) = IF i < pm AND i = j THEN 1 ELSE 0 ENDIF)
          AND
          (FORALL (pn: posnat, N: MatrixMN(pm, pn)): M * N = N) AND
           (FORALL (pn: posnat, N: MatrixMN(pn, pm)): N * M = N)}"
     matrices nil)
    (IF const-decl "[boolean, T, T -> T]" if_def nil)
    (FALSE const-decl "bool" booleans nil)
    (is_simple_prod? const-decl "bool" matrix_det nil)
    (posnat nonempty-type-eq-decl nil integers nil)
    (nonneg_int nonempty-type-eq-decl nil integers nil)
    (* const-decl "{A: MatrixMN(rows(M), columns(N)) |
         FORALL (i, j): entry(A)(i, j) = row(M)(i) * col(N)(j)}"
       matrices nil)
    (col def-decl "VectorN(rows(M))" matrices nil)
    (VectorN type-eq-decl nil matrices nil)
    (row const-decl "Vector" matrices nil)
    (* const-decl "real" matrices nil)
    (Vector type-eq-decl nil matrices nil)
    (MatrixMN type-eq-decl nil matrices nil)
    (entry const-decl "real" matrices nil)
    (/= const-decl "boolean" notequal nil)
    (IMPLIES const-decl "[bool, bool -> bool]" booleans nil)
    (upper_triangular? const-decl "bool" matrix_det nil)
    (Square type-eq-decl nil matrices nil)
    (PosFullMatrix type-eq-decl nil matrices nil)
    (columns def-decl "{c: nat |
         (FORALL (i: below(length(M))): length(nth(M, i)) <= c) AND
          (null?(M) AND c = 0 OR
            (EXISTS (i: below(length(M))): length(nth(M, i)) = c))}"
             matrices nil)
    (<= const-decl "bool" reals nil) (> const-decl "bool" reals nil)
    (FullMatrix type-eq-decl nil matrices nil)
    (nth def-decl "T" list_props nil)
    (below type-eq-decl nil nat_types nil)
    (= const-decl "[T, T -> boolean]" equalities nil)
    (below type-eq-decl nil naturalnumbers nil)
    (length def-decl "nat" list_props nil)
    (< const-decl "bool" reals nil)
    (null? adt-recognizer-decl "[list -> boolean]" list_adt nil)
    (OR const-decl "[bool, bool -> bool]" booleans nil)
    (rows const-decl "nat" matrices nil)
    (nat nonempty-type-eq-decl nil naturalnumbers nil)
    (>= const-decl "bool" reals nil)
    (int nonempty-type-eq-decl nil integers nil)
    (integer_pred const-decl "[rational -> boolean]" integers nil)
    (rational nonempty-type-from-decl nil rationals nil)
    (rational_pred const-decl "[real -> boolean]" rationals nil)
    (real nonempty-type-from-decl nil reals nil)
    (Matrix type-eq-decl nil matrices nil)
    (real_pred const-decl "[number_field -> boolean]" reals nil)
    (number_field nonempty-type-from-decl nil number_fields nil)
    (number_field_pred const-decl "[number -> boolean]" number_fields
     nil)
    (AND const-decl "[bool, bool -> bool]" booleans nil)
    (every adt-def-decl "boolean" list_adt nil)
    (PRED type-eq-decl nil defined_types nil)
    (bool nonempty-type-eq-decl nil booleans nil)
    (boolean nonempty-type-decl nil booleans nil)
    (list type-decl nil list_adt nil)
    (number nonempty-type-decl nil numbers nil)
    (SquareMatrix type-eq-decl nil matrices nil)
    (NOT const-decl "[bool -> bool]" booleans nil)
    (matrix_mult_assoc formula-decl nil matrices nil)
    (mult_Id_left formula-decl nil matrices nil)
    (real_gt_is_strict_total_order name-judgement
     "(strict_total_order?[real])" real_props nil)
    (Esr const-decl "SquareMatrix(pn)" matrix_det nil)
    (columns_form_matrix formula-decl nil matrices nil)
    (entry_form_matrix formula-decl nil matrices nil)
    (newSQ skolem-const-decl "{M: MatrixMN(rows(SQ), columns(SQ)) |
         FORALL (i: below(rows(SQ)), j_1: below(columns(SQ))):
           nth(row(M)(i), j_1) =
            IF i = j_1 AND i < j THEN entry(SQ)(i, i)
            ELSIF i = j_1 THEN 1
            ELSE 0
            ENDIF}" matrix_diag nil)
    (j skolem-const-decl "nat" matrix_diag nil)
    (SQ skolem-const-decl "Square" matrix_diag nil)
    (replace_row_id formula-decl nil matrix_props nil)
    (length_row formula-decl nil matrix_props nil)
    (rows_form_matrix formula-decl nil matrices nil)
    (mult_Esr_left formula-decl nil matrix_det nil)
    (rows_Esr formula-decl nil matrix_det nil)
    (form_matrix const-decl "{M: MatrixMN(m, n) |
         FORALL (i: below(m), j: below(n)): nth(row(M)(i), j) = F(i, j)}"
                 matrices nil)
    (form_matrix_square application-judgement "FullMatrix" matrices
     nil)
    (posint_plus_nnint_is_posint application-judgement "posint"
     integers nil)
    (entry_Id formula-decl nil matrices nil)
    (det_Id formula-decl nil matrix_props nil)
    (nat_induction formula-decl nil naturalnumbers nil)
    (pred type-eq-decl nil defined_types nil)
    (det_upper_triangular_zero formula-decl nil matrix_det nil)
    (isdiag skolem-const-decl "[nat -> [Square -> boolean]]"
     matrix_diag nil)
    (access const-decl "real" matrices nil)
    (replace_row def-decl "{PFM |
         rows(PFM) = rows(D) AND
          columns(PFM) = columns(D) AND
           (FORALL (j):
              row(PFM)(j) =
               IF j < rows(D) AND j = i THEN v ELSE row(D)(j) ENDIF)
            AND
            (FORALL (j, k):
               entry(PFM)(j, k) =
                IF j < rows(D) AND j = i THEN access(v)(k)
                ELSE entry(D)(j, k)
                ENDIF)}" matrix_props nil)
    (* const-decl "VectorN(length(v2))" matrices nil)
    (real_lt_is_strict_total_order name-judgement
     "(strict_total_order?[real])" real_props nil)
    (length_scal_vect formula-decl nil matrices nil)
    (entry_mult formula-decl nil matrices nil)
    (dot_eq_sigma formula-decl nil matrices nil)
    (real_le_is_total_order name-judgement "(total_order?[real])"
     real_props nil)
    (int_minus_int_is_int application-judgement "int" integers nil)
    (int_min application-judgement "{k: int | k <= i AND k <= j}"
     real_defs nil)
    (real_ge_is_total_order name-judgement "(total_order?[real])"
     real_props nil)
    (subrange type-eq-decl nil integers nil)
    (access_row formula-decl nil matrices nil)
    (sigma_restrict_eq_0 formula-decl nil sigma "reals/")
    (T_high type-eq-decl nil sigma "reals/")
    (min const-decl "{p: real | p <= m AND p <= n}" real_defs nil)
    (- const-decl "[numfield, numfield -> numfield]" number_fields nil)
    (T_low type-eq-decl nil sigma "reals/")
    (access_scal formula-decl nil matrices nil)
    (entry_replace_row formula-decl nil matrix_props nil)
    (full_matrix_eq formula-decl nil matrices nil)
    (zero const-decl "VectorN(n)" matrices nil)
    (R skolem-const-decl "Square" matrix_diag nil)
    (AA skolem-const-decl "SquareMatrix(rows(S))" matrix_diag nil)
    (S skolem-const-decl "Square" matrix_diag nil)
    (det_replace_row_scal formula-decl nil matrix_props nil)
    (det_mult_simple_prod_left formula-decl nil matrix_det nil)
    (columns_mult formula-decl nil matrices nil)
    (rows_mult formula-decl nil matrices nil)
    (* const-decl "[numfield, numfield -> numfield]" number_fields nil)
    (numfield nonempty-type-eq-decl nil number_fields nil)
    (diag_det_zero_row formula-decl nil matrix_diag nil)
    (mult_full application-judgement "FullMatrix" matrices nil)
    (real_times_real_is_real application-judgement "real" reals nil))
   nil)
  (det_mult-1 nil 3614353622
   ("" (skeep)
    (("" (name "DD" "diag(true, true, S)")
      (("" (label "DDname" -1)
        (("" (typepred "DD")
          (("" (name "QQ" "DD`multip")
            (("" (replaces -1)
              (("" (assert)
                (("" (name "AA" "DD`ans")
                  (("" (lemma "diag_det_zero_row")
                    (("" (inst - "S" "true" "true")
                      (("" (replace -2)
                        (("" (assert)
                          (("" (replace "DDname")
                            (("" (replace -2)
                              ((""
                                (label "sz" -1)
                                ((""
                                  (hide "sz")
                                  ((""
                                    (hide -1)
                                    ((""
                                      (name "II" "DD`inv")
                                      ((""
                                        (replaces -1)
                                        ((""
                                          (case "NOT S = II*AA")
                                          (("1"
                                            (case
                                             "NOT II*(QQ*S)=II*AA")
                                            (("1" (assertnil nil)
                                             ("2"
                                              (rewrite
                                               "matrix_mult_assoc"
                                               -1
                                               :dir
                                               rl)
                                              (("1"
                                                (replace -6)
                                                (("1"
                                                  (rewrite
                                                   "mult_Id_left")
                                                  nil
                                                  nil))
                                                nil)
                                               ("2"
                                                (typepred "QQ")
                                                (("2"
                                                  (expand "rows")
                                                  (("2"
                                                    (expand "length")
                                                    (("2"
                                                      (assert)
                                                      nil
                                                      nil))
                                                    nil))
                                                  nil))
                                                nil))
                                              nil))
                                            nil)
                                           ("2"
                                            (case
                                             "det(AA*R)=det(AA)*det(R)")
                                            (("1"
                                              (replace -2 1)
                                              (("1"
                                                (rewrite
                                                 "matrix_mult_assoc"
                                                 1)
                                                (("1"
                                                  (rewrite -10 1)
                                                  (("1"
                                                    (rewrite -10 1)
                                                    nil
                                                    nil)
                                                   ("2"
                                                    (rewrite
                                                     "rows_mult")
                                                    (("2"
                                                      (rewrite
                                                       "columns_mult"
                                                       1)
                                                      (("1"
                                                        (assert)
                                                        nil
                                                        nil)
                                                       ("2"
                                                        (typepred "AA")
                                                        (("2"
                                                          (expand
                                                           "rows")
                                                          (("2"
                                                            (expand
                                                             "length")
                                                            (("2"
                                                              (assert)
                                                              nil
                                                              nil))
                                                            nil))
                                                          nil))
                                                        nil))
                                                      nil))
                                                    nil))
                                                  nil)
                                                 ("2"
                                                  (typepred "AA")
                                                  (("2"
                                                    (expand "rows")
                                                    (("2"
                                                      (expand "length")
                                                      (("2"
                                                        (assert)
                                                        nil
                                                        nil))
                                                      nil))
                                                    nil))
                                                  nil))
                                                nil))
                                              nil)
                                             ("2"
                                              (hide 2)
                                              (("2"
                                                (case "det(AA)=0")
                                                (("1"
                                                  (replace -1)
                                                  (("1"
                                                    (assert)
                                                    (("1"
                                                      (hide 2)
                                                      (("1"
                                                        (reveal "sz")
                                                        (("1"
                                                          (assert)
                                                          (("1"
                                                            (lemma
                                                             "det_replace_row_scal")
                                                            (("1"
                                                              (skeep
                                                               -2)
                                                              (("1"
                                                                (inst
                                                                 -
                                                                 "AA*R"
                                                                 "i"
                                                                 "0"
                                                                 "zero(rows(S))")
                                                                (("1"
                                                                  (case
                                                                   "AA*R = replace_row(i, 0 * zero(rows(S)))(AA * R)")
                                                                  (("1"
                                                                    (assert)
                                                                    (("1"
                                                                      (rewrite
                                                                       "columns_mult"
                                                                       1)
                                                                      (("1"
                                                                        (assert)
                                                                        (("1"
                                                                          (rewrite
                                                                           "rows_mult"
                                                                           1)
                                                                          (("1"
                                                                            (assert)
                                                                            nil
                                                                            nil))
                                                                          nil))
                                                                        nil)
                                                                       ("2"
                                                                        (typepred
                                                                         "AA")
                                                                        (("2"
                                                                          (expand
                                                                           "rows")
                                                                          (("2"
                                                                            (expand
                                                                             "length")
                                                                            (("2"
                                                                              (assert)
                                                                              nil
                                                                              nil))
                                                                            nil))
                                                                          nil))
                                                                        nil))
                                                                      nil))
                                                                    nil)
                                                                   ("2"
                                                                    (assert)
                                                                    (("2"
                                                                      (hide
                                                                       -1)
                                                                      (("2"
                                                                        (rewrite
                                                                         "full_matrix_eq"
                                                                         1)
                                                                        (("2"
                                                                          (skosimp*)
                                                                          (("2"
                                                                            (case
                                                                             "NOT (i!1 < rows(S) AND j!1 < rows(S))")
                                                                            (("1"
                                                                              (typepred
                                                                               "i!1")
                                                                              (("1"
                                                                                (typepred
                                                                                 "j!1")
                                                                                (("1"
                                                                                  (rewrite
                                                                                   "columns_mult")
                                                                                  (("1"
                                                                                    (rewrite
                                                                                     "rows_mult")
                                                                                    (("1"
                                                                                      (assert)
                                                                                      nil
                                                                                      nil))
                                                                                    nil)
                                                                                   ("2"
                                                                                    (typepred
                                                                                     "AA")
                                                                                    (("2"
                                                                                      (expand
                                                                                       "rows")
                                                                                      (("2"
                                                                                        (expand
                                                                                         "length")
                                                                                        (("2"
                                                                                          (assert)
                                                                                          nil
                                                                                          nil))
                                                                                        nil))
                                                                                      nil))
                                                                                    nil))
                                                                                  nil))
                                                                                nil))
                                                                              nil)
                                                                             ("2"
                                                                              (flatten)
                                                                              (("2"
                                                                                (rewrite
                                                                                 "entry_replace_row")
                                                                                (("1"
                                                                                  (lift-if)
                                                                                  (("1"
                                                                                    (split
                                                                                     1)
                                                                                    (("1"
                                                                                      (flatten)
                                                                                      (("1"
                                                                                        (replace
                                                                                         -1)
                                                                                        (("1"
                                                                                          (assert)
                                                                                          (("1"
                                                                                            (rewrite
                                                                                             "access_scal")
                                                                                            (("1"
                                                                                              (assert)
                                                                                              (("1"
                                                                                                (case
                                                                                                 "FORALL (rrrrr:real): 0*rrrrr=0")
                                                                                                (("1"
                                                                                                  (rewrite
                                                                                                   -1)
                                                                                                  (("1"
                                                                                                    (hide
                                                                                                     -1)
                                                                                                    (("1"
                                                                                                      (rewrite
                                                                                                       "entry_mult"
                                                                                                       1)
                                                                                                      (("1"
                                                                                                        (rewrite
                                                                                                         "dot_eq_sigma"
                                                                                                         1)
                                                                                                        (("1"
                                                                                                          (rewrite
                                                                                                           "sigma_restrict_eq_0")
                                                                                                          (("1"
                                                                                                            (hide
                                                                                                             2)
                                                                                                            (("1"
                                                                                                              (skosimp*)
                                                                                                              (("1"
                                                                                                                (rewrite
                                                                                                                 "access_row")
                                                                                                                (("1"
                                                                                                                  (inst
                                                                                                                   -
                                                                                                                   "i!2")
                                                                                                                  (("1"
                                                                                                                    (assert)
                                                                                                                    nil
                                                                                                                    nil))
                                                                                                                  nil))
                                                                                                                nil))
                                                                                                              nil))
                                                                                                            nil))
                                                                                                          nil))
                                                                                                        nil))
                                                                                                      nil))
                                                                                                    nil))
                                                                                                  nil)
                                                                                                 ("2"
                                                                                                  (assert)
                                                                                                  nil
                                                                                                  nil))
                                                                                                nil))
                                                                                              nil))
                                                                                            nil))
                                                                                          nil))
                                                                                        nil))
                                                                                      nil)
                                                                                     ("2"
                                                                                      (propax)
                                                                                      nil
                                                                                      nil))
                                                                                    nil))
                                                                                  nil)
                                                                                 ("2"
                                                                                  (rewrite
                                                                                   "columns_mult")
                                                                                  (("1"
                                                                                    (rewrite
                                                                                     "length_scal_vect")
                                                                                    (("1"
                                                                                      (assert)
                                                                                      nil
                                                                                      nil))
                                                                                    nil)
                                                                                   ("2"
                                                                                    (typepred
                                                                                     "AA")
                                                                                    (("2"
                                                                                      (expand
                                                                                       "rows")
                                                                                      (("2"
                                                                                        (expand
                                                                                         "length")
                                                                                        (("2"
                                                                                          (assert)
                                                                                          nil
                                                                                          nil))
                                                                                        nil))
                                                                                      nil))
                                                                                    nil))
                                                                                  nil))
                                                                                nil))
                                                                              nil))
                                                                            nil))
                                                                          nil))
                                                                        nil))
                                                                      nil))
                                                                    nil)
                                                                   ("3"
                                                                    (rewrite
                                                                     "columns_mult"
                                                                     1)
                                                                    (("1"
                                                                      (rewrite
                                                                       "rows_mult"
                                                                       1)
                                                                      (("1"
                                                                        (assert)
                                                                        nil
                                                                        nil))
                                                                      nil)
                                                                     ("2"
                                                                      (typepred
                                                                       "AA")
                                                                      (("2"
                                                                        (expand
                                                                         "rows")
                                                                        (("2"
                                                                          (expand
                                                                           "length")
                                                                          (("2"
                                                                            (assert)
                                                                            nil
                                                                            nil))
                                                                          nil))
                                                                        nil))
                                                                      nil))
                                                                    nil))
                                                                  nil)
                                                                 ("2"
                                                                  (rewrite
                                                                   "rows_mult")
                                                                  (("2"
                                                                    (rewrite
                                                                     "columns_mult")
                                                                    (("1"
                                                                      (assert)
                                                                      nil
                                                                      nil)
                                                                     ("2"
                                                                      (typepred
                                                                       "AA")
                                                                      (("2"
                                                                        (expand
                                                                         "rows")
                                                                        (("2"
                                                                          (expand
                                                                           "length")
                                                                          (("2"
                                                                            (assert)
                                                                            nil
                                                                            nil))
                                                                          nil))
                                                                        nil))
                                                                      nil))
                                                                    nil))
                                                                  nil))
                                                                nil))
                                                              nil))
                                                            nil))
                                                          nil))
                                                        nil))
                                                      nil))
                                                    nil))
                                                  nil)
                                                 ("2"
                                                  (name
                                                   "isdiag"
                                                   "LAMBDA (k): (LAMBDA (SQ): (FORALL (i): i<rows(SQ) AND i>=k IMPLIES entry(SQ)(i,i)=1) AND (FORALL (i,j): i<rows(SQ) AND j<rows(SQ) AND entry(SQ)(i,j)/=0 IMPLIES i=j))")
                                                  (("2"
                                                    (case
                                                     "FORALL (k,SQ,DQ): k<=rows(SQ) AND isdiag(k)(SQ) AND rows(SQ)=rows(DQ) IMPLIES det(SQ*DQ)=det(SQ)*det(DQ)")
                                                    (("1"
                                                      (inst
                                                       -
                                                       "rows(AA)"
                                                       "AA"
                                                       "R")
                                                      (("1"
                                                        (assert)
                                                        (("1"
                                                          (hide -1)
                                                          (("1"
                                                            (expand
                                                             "isdiag")
                                                            (("1"
                                                              (split 1)
                                                              (("1"
                                                                (skosimp*)
                                                                (("1"
                                                                  (assert)
                                                                  nil
                                                                  nil))
                                                                nil)
                                                               ("2"
                                                                (skeep)
                                                                (("2"
                                                                  (lemma
                                                                   "det_upper_triangular_zero")
                                                                  (("2"
                                                                    (inst
                                                                     -
                                                                     "AA")
                                                                    (("2"
                                                                      (assert)
                                                                      (("2"
                                                                        (inst
                                                                         -
                                                                         "i"
                                                                         "j")
                                                                        (("2"
                                                                          (assert)
                                                                          (("2"
                                                                            (flatten)
                                                                            (("2"
                                                                              (inst
                                                                               +
                                                                               "j")
                                                                              (("2"
                                                                                (assert)
                                                                                nil
                                                                                nil))
                                                                              nil))
                                                                            nil))
                                                                          nil))
                                                                        nil))
                                                                      nil))
                                                                    nil))
                                                                  nil))
                                                                nil))
                                                              nil))
                                                            nil))
                                                          nil))
                                                        nil))
                                                      nil)
                                                     ("2"
                                                      (hide-all-but 1)
                                                      (("2"
                                                        (induct "k")
                                                        (("1"
                                                          (skeep)
                                                          (("1"
                                                            (case
                                                             "SQ = Id(rows(SQ))")
                                                            (("1"
                                                              (replace
                                                               -1)
                                                              (("1"
                                                                (rewrite
                                                                 "mult_Id_left")
                                                                (("1"
                                                                  (rewrite
                                                                   "det_Id")
                                                                  (("1"
                                                                    (assert)
                                                                    nil
                                                                    nil))
                                                                  nil))
                                                                nil))
                                                              nil)
                                                             ("2"
                                                              (rewrite
                                                               "full_matrix_eq")
                                                              (("2"
                                                                (assert)
                                                                (("2"
                                                                  (skeep)
                                                                  (("2"
                                                                    (typepred
                                                                     "i")
                                                                    (("2"
                                                                      (typepred
                                                                       "j")
                                                                      (("2"
                                                                        (assert)
                                                                        (("2"
                                                                          (rewrite
                                                                           "entry_Id")
                                                                          (("2"
                                                                            (expand
                                                                             "isdiag")
                                                                            (("2"
                                                                              (flatten)
                                                                              (("2"
                                                                                (lift-if)
                                                                                (("2"
                                                                                  (split
                                                                                   1)
                                                                                  (("1"
                                                                                    (flatten)
                                                                                    (("1"
                                                                                      (inst
                                                                                       -
                                                                                       "i"
                                                                                       "j")
                                                                                      (("1"
                                                                                        (assert)
                                                                                        nil
                                                                                        nil))
                                                                                      nil))
                                                                                    nil)
                                                                                   ("2"
                                                                                    (flatten)
                                                                                    (("2"
                                                                                      (inst
                                                                                       -
                                                                                       "i")
                                                                                      (("2"
                                                                                        (assert)
                                                                                        nil
                                                                                        nil))
                                                                                      nil))
                                                                                    nil))
                                                                                  nil))
                                                                                nil))
                                                                              nil))
                                                                            nil))
                                                                          nil))
                                                                        nil))
                                                                      nil))
                                                                    nil))
                                                                  nil))
                                                                nil))
                                                              nil))
                                                            nil))
                                                          nil)
                                                         ("2"
                                                          (skeep)
                                                          (("2"
                                                            (assert)
                                                            (("2"
                                                              (skeep)
                                                              (("2"
                                                                (assert)
                                                                (("2"
                                                                  (name
                                                                   "rr"
                                                                   "entry(SQ)(j,j)")
                                                                  (("2"
                                                                    (name
                                                                     "newSQ"
                                                                     "form_matrix(lambda (k,p): IF k=p AND k<j THEN entry(SQ)(k,k) ELSIF k=p THEN 1 ELSE 0 ENDIF,rows(SQ),columns(SQ))")
                                                                    (("2"
                                                                      (case
                                                                       "SQ = Esr(rows(S))(j,rr)*newSQ")
                                                                      (("1"
                                                                        (replace
                                                                         -1
                                                                         +)
                                                                        (("1"
                                                                          (rewrite
                                                                           "matrix_mult_assoc")
                                                                          (("1"
                                                                            (rewrite
                                                                             "mult_Esr_left")
                                                                            (("1"
                                                                              (rewrite
                                                                               "mult_Esr_left")
                                                                              (("1"
                                                                                (rewrite
                                                                                 "det_replace_row_scal")
                                                                                (("1"
                                                                                  (rewrite
                                                                                   "det_replace_row_scal")
                                                                                  (("1"
                                                                                    (rewrite
                                                                                     "replace_row_id")
                                                                                    (("1"
                                                                                      (rewrite
                                                                                       "replace_row_id")
                                                                                      (("1"
                                                                                        (inst
                                                                                         -
                                                                                         "newSQ"
                                                                                         "DQ")
                                                                                        (("1"
                                                                                          (assert)
                                                                                          (("1"
                                                                                            (hide
                                                                                             2)
                                                                                            (("1"
                                                                                              (expand
                                                                                               "isdiag")
                                                                                              (("1"
                                                                                                (flatten)
                                                                                                (("1"
                                                                                                  (case
                                                                                                   "rows(newSQ)=rows(SQ) AND columns(newSQ)=columns(SQ)")
                                                                                                  (("1"
                                                                                                    (flatten)
                                                                                                    (("1"
                                                                                                      (assert)
                                                                                                      (("1"
                                                                                                        (split
                                                                                                         +)
                                                                                                        (("1"
                                                                                                          (skeep)
                                                                                                          (("1"
                                                                                                            (expand
                                                                                                             "newSQ"
                                                                                                             +)
                                                                                                            (("1"
                                                                                                              (rewrite
                                                                                                               "entry_form_matrix")
                                                                                                              (("1"
                                                                                                                (assert)
                                                                                                                nil
                                                                                                                nil))
                                                                                                              nil))
                                                                                                            nil))
                                                                                                          nil)
                                                                                                         ("2"
                                                                                                          (skosimp*)
                                                                                                          (("2"
                                                                                                            (expand
                                                                                                             "newSQ"
                                                                                                             1)
                                                                                                            (("2"
                                                                                                              (rewrite
                                                                                                               "entry_form_matrix")
                                                                                                              (("2"
                                                                                                                (assert)
                                                                                                                nil
                                                                                                                nil))
                                                                                                              nil))
                                                                                                            nil))
                                                                                                          nil))
                                                                                                        nil))
                                                                                                      nil))
                                                                                                    nil)
                                                                                                   ("2"
                                                                                                    (hide
                                                                                                     2)
                                                                                                    (("2"
                                                                                                      (expand
                                                                                                       "newSQ")
                                                                                                      (("2"
                                                                                                        (propax)
                                                                                                        nil
                                                                                                        nil))
                                                                                                      nil))
                                                                                                    nil))
                                                                                                  nil))
                                                                                                nil))
                                                                                              nil))
                                                                                            nil))
                                                                                          nil)
                                                                                         ("2"
                                                                                          (assert)
                                                                                          nil
                                                                                          nil))
                                                                                        nil))
                                                                                      nil)
                                                                                     ("2"
                                                                                      (rewrite
                                                                                       "rows_mult"
                                                                                       1)
                                                                                      (("2"
                                                                                        (assert)
                                                                                        nil
                                                                                        nil))
                                                                                      nil))
                                                                                    nil)
                                                                                   ("2"
                                                                                    (rewrite
                                                                                     "length_row")
                                                                                    nil
                                                                                    nil))
                                                                                  nil)
                                                                                 ("2"
                                                                                  (rewrite
                                                                                   "length_row")
                                                                                  (("2"
                                                                                    (rewrite
                                                                                     "columns_mult")
                                                                                    (("1"
                                                                                      (rewrite
                                                                                       "rows_mult")
                                                                                      (("1"
                                                                                        (assert)
                                                                                        nil
                                                                                        nil))
                                                                                      nil)
                                                                                     ("2"
                                                                                      (typepred
                                                                                       "newSQ")
                                                                                      (("2"
                                                                                        (expand
                                                                                         "rows")
                                                                                        (("2"
                                                                                          (propax)
                                                                                          nil
                                                                                          nil))
                                                                                        nil))
                                                                                      nil))
                                                                                    nil))
                                                                                  nil)
                                                                                 ("3"
                                                                                  (rewrite
                                                                                   "rows_mult")
                                                                                  (("3"
                                                                                    (assert)
                                                                                    nil
                                                                                    nil))
                                                                                  nil))
                                                                                nil)
                                                                               ("2"
                                                                                (rewrite
                                                                                 "rows_mult")
                                                                                (("2"
                                                                                  (assert)
                                                                                  (("2"
                                                                                    (expand
                                                                                     "newSQ"
                                                                                     1)
                                                                                    (("2"
                                                                                      (rewrite
                                                                                       "rows_form_matrix")
                                                                                      (("2"
                                                                                        (postpone)
                                                                                        nil
                                                                                        nil))
                                                                                      nil))
                                                                                    nil))
                                                                                  nil))
                                                                                nil)
                                                                               ("3"
                                                                                (postpone)
                                                                                nil
                                                                                nil)
                                                                               ("4"
                                                                                (postpone)
                                                                                nil
                                                                                nil))
                                                                              nil)
                                                                             ("2"
                                                                              (postpone)
                                                                              nil
                                                                              nil)
                                                                             ("3"
                                                                              (postpone)
                                                                              nil
                                                                              nil)
                                                                             ("4"
                                                                              (postpone)
                                                                              nil
                                                                              nil))
                                                                            nil)
                                                                           ("2"
                                                                            (postpone)
                                                                            nil
                                                                            nil))
                                                                          nil))
                                                                        nil)
                                                                       ("2"
                                                                        (postpone)
                                                                        nil
                                                                        nil))
                                                                      nil))
                                                                    nil))
                                                                  nil))
                                                                nil))
                                                              nil))
                                                            nil))
                                                          nil))
                                                        nil))
                                                      nil))
                                                    nil))
                                                  nil))
                                                nil))
                                              nil))
                                            nil))
                                          nil))
                                        nil))
                                      nil))
                                    nil))
                                  nil))
                                nil))
                              nil))
                            nil))
                          nil))
                        nil))
                      nil))
                    nil))
                  nil))
                nil))
              nil))
            nil))
          nil))
        nil))
      nil))
    nil)
   nil shostak)))


Messung V0.5 in Prozent
C=100 H=100 G=100

¤ Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.0.554Bemerkung:  (vorverarbeitet am  2026-04-26) ¤

*Bot Zugriff






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge