(exp_term
(exp_term_TCC1 0
(exp_term_TCC1-1
nil 3320227930
(
"" (skosimp) ((
"" (
assert)
nil nil))
nil)
((real_ge_is_total_order name-judgement
"(total_order?[real])"
real_props
nil))
shostak))
(exp_term_power_TCC1 0
(exp_term_power_TCC1-1
nil 3320473217
(
"" (skosimp) ((
"" (
assert)
nil nil))
nil)
((real_ge_is_total_order name-judgement
"(total_order?[real])"
real_props
nil))
shostak))
(exp_term_power 0
(exp_term_power-1
nil 3320469433
(
"" (induct
"m")
((
"1" (skosimp)
((
"1" (
rewrite "expt_x0")
((
"1" (
expand "exp_term")
((
"1" (
expand "abs") ((
"1" (
assert)
nil nil))
nil))
nil))
nil))
nil)
(
"2" (skosimp*)
((
"2" (inst -
"a!1" "n!1")
((
"2" (
assert)
((
"2" (
case "abs(exp_term(a!1)(n!1)) /= 0")
((
"1" (
rewrite "expt_plus" 2)
((
"1" (
rewrite "expt_x1" 2)
((
"1"
(
case "abs(exp_term(a!1)(j!1 * n!1 + n!1)) <= abs(exp_term(a!1)(n!1)) * abs(exp_term(a!1)(j!1 * n!1))")
((
"1" (
assert)
((
"1"
(lemma
"both_sides_times_pos_le1"
(
"pz" "abs(exp_term(a!1)(n!1))" "x"
"abs(exp_term(a!1)(j!1 * n!1))" "y"
"abs(exp_term(a!1)(n!1)) ^ j!1"))
((
"1" (
assert)
nil nil))
nil))
nil)
(
"2" (hide 3 -2)
((
"2" (
expand "exp_term")
((
"2" (case-replace
"n!1=0")
((
"1" (
assert)
((
"1" (
expand "abs") ((
"1" (
assert)
nil nil))
nil))
nil)
(
"2" (
assert)
((
"2" (case-replace
"j!1=0")
((
"1" (
assert)
((
"1"
(
expand "abs" 2 3)
((
"1" (
assert)
nil nil))
nil))
nil)
(
"2" (
assert)
((
"2"
(
rewrite "abs_mult" 3 :dir rl)
((
"2"
(
rewrite "div_times" 3)
((
"2"
(
rewrite "expt_plus" 3 :dir rl)
((
"2"
(
rewrite "abs_div" 3)
((
"2"
(
rewrite "abs_div" 3)
((
"2"
(
expand "abs" 3 4)
((
"2"
(
expand "abs" 3 2)
((
"2"
(
rewrite
"abs_expt"
3
:dir
rl)
((
"2"
(
case "abs(a!1)>0")
((
"1"
(lemma
"expt_pos"
(
"px"
"abs(a!1)"
"i"
"(j!1+1)*n!1"))
((
"1"
(lemma
"posreal_times_posreal_is_posreal"
(
"px"
"factorial(n!1)"
"py"
"factorial(j!1 * n!1)"))
((
"1"
(lemma
"both_sides_div_pos_lt2"
(
"px"
"factorial(j!1 * n!1 + n!1)"
"pz"
"abs(a!1) ^ (j!1 * n!1 + n!1)"
"py"
"factorial(n!1) * factorial(j!1 * n!1)"))
((
"1"
(
assert)
((
"1"
(hide
4
5
-2
-3
6)
((
"1"
(
case
"forall (pn,pm:posnat): factorial(pm)*factorial(pn) < factorial(pn+pm)")
((
"1"
(inst
-
"n!1"
"j!1*n!1")
((
"1"
(
assert)
nil
nil))
nil)
(
"2"
(hide-all-but
1)
((
"2"
(induct
"pn")
((
"1"
(
assert)
nil
nil)
(
"2"
(
assert)
nil
nil)
(
"3"
(skosimp*)
((
"3"
(case-replace
"j!2=0")
((
"1"
(
expand
"factorial"
1
2)
((
"1"
(
expand
"factorial"
1
3)
((
"1"
(
expand
"factorial"
1
1)
((
"1"
(
assert)
nil
nil))
nil))
nil))
nil)
(
"2"
(
assert)
((
"2"
(inst
-
"pm!1")
((
"2"
(
expand
"factorial"
2
3)
((
"2"
(
expand
"factorial"
2
2)
((
"2"
(lemma
"lt_times_lt_pos1"
(
"px"
"factorial(pm!1) * factorial(j!2)"
"y"
"factorial(pm!1 + j!2)"
"nnz"
"1+j!2"
"w"
"1+j!2+pm!1"))
((
"2"
(
assert)
nil
nil))
nil))
nil))
nil))
nil))
nil))
nil))
nil))
nil))
nil))
nil))
nil))
nil)
(
"2"
(
assert)
nil
nil))
nil))
nil)
(
"2"
(propax)
nil
nil))
nil)
(
"2"
(
expand "abs")
((
"2"
(case-replace
"a!1<0")
((
"1"
(
assert)
nil
nil)
(
"2"
(
assert)
nil
nil))
nil))
nil))
nil))
nil))
nil))
nil))
nil))
nil))
nil))
nil))
nil))
nil))
nil))
nil))
nil))
nil))
nil))
nil))
nil))
nil)
(
"2" (hide-all-but (1 2))
((
"2" (
expand "exp_term")
((
"2" (case-replace
"n!1=0")
((
"1" (
expand "abs") ((
"1" (
assert)
nil nil))
nil)
(
"2" (
assert)
((
"2" (
rewrite "abs_div")
((
"2" (
expand "abs" -1 2)
((
"2" (
rewrite "abs_expt" -1 :dir rl)
((
"2"
(lemma
"expt_nonzero"
(
"n0x" "abs(a!1)" "i" "n!1"))
((
"1" (
assert)
nil nil)
(
"2" (
expand "abs")
((
"2"
(case-replace
"a!1<0")
((
"1" (
assert)
nil nil)
(
"2" (
assert)
nil nil))
nil))
nil))
nil))
nil))
nil))
nil))
nil))
nil))
nil))
nil))
nil))
nil))
nil))
nil))
nil)
((nnreal_exp application-judgement
"nnreal" exponentiation
nil)
(nnint_plus_posint_is_posint application-judgement
"posint"
integers
nil)
(expt_nonzero formula-decl
nil exponentiation
nil)
(nzreal nonempty-type-eq-decl
nil reals
nil)
(expt_plus formula-decl
nil exponentiation
nil)
(int_minus_int_is_int application-judgement
"int" integers
nil)
(nnreal_times_nnreal_is_nnreal application-judgement
"nnreal"
real_types
nil)
(nnint_plus_nnint_is_nnint application-judgement
"nonneg_int"
integers
nil)
(+ const-decl
"[numfield, numfield -> numfield]" number_fields
nil)
(both_sides_times_pos_le1 formula-decl
nil real_props
nil)
(> const-decl
"bool" reals
nil)
(posreal nonempty-type-eq-decl
nil real_types
nil)
(real_gt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props
nil)
(real_div_nzreal_is_real application-judgement
"real" reals
nil)
(nonzero_real nonempty-type-eq-decl
nil reals
nil)
(div_times formula-decl
nil real_props
nil)
(posint_times_posint_is_posint application-judgement
"posint"
integers
nil)
(abs_div formula-decl
nil real_props
nil)
(nnreal_div_posreal_is_nnreal application-judgement
"nnreal"
real_types
nil)
(abs_expt formula-decl
nil exponentiation
nil)
(minus_real_is_real application-judgement
"real" reals
nil)
(expt_pos formula-decl
nil exponentiation
nil)
(both_sides_div_pos_lt2 formula-decl
nil real_props
nil)
(lt_times_lt_pos1 formula-decl
nil real_props
nil)
(even_plus_odd_is_odd application-judgement
"odd_int" integers
nil)
(factorial_0 formula-decl
nil factorial
"ints/")
(< const-decl
"bool" reals
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)
(posreal_times_posreal_is_posreal judgement-tcc
nil real_types
nil)
(abs_mult formula-decl
nil real_props
nil)
(nznum nonempty-type-eq-decl
nil number_fields
nil)
(/ const-decl
"[numfield, nznum -> numfield]" number_fields
nil)
(nonneg_int nonempty-type-eq-decl
nil integers
nil)
(posnat nonempty-type-eq-decl
nil integers
nil)
(factorial def-decl
"posnat" factorial
"ints/")
(even_times_int_is_even application-judgement
"even_int" integers
nil)
(real_times_real_is_real application-judgement
"real" reals
nil)
(int_times_even_is_even application-judgement
"even_int" integers
nil)
(even_plus_even_is_even application-judgement
"even_int" integers
nil)
(nzrat_abs_is_pos application-judgement
"{r: posrat | r >= q}"
real_defs
nil)
(int_abs_is_nonneg application-judgement
"{j: nonneg_int | j >= i}"
real_defs
nil)
(nzint_abs_is_pos application-judgement
"{j: posint | j >= i}"
real_defs
nil)
(= const-decl
"[T, T -> boolean]" equalities
nil)
(expt_x1 formula-decl
nil exponentiation
nil)
(real_le_is_total_order name-judgement
"(total_order?[real])"
real_props
nil)
(expt_x0 formula-decl
nil exponentiation
nil)
(nat_induction formula-decl
nil naturalnumbers
nil)
(^ const-decl
"real" exponentiation
nil)
(
OR const-decl
"[bool, bool -> bool]" booleans
nil)
(* const-decl
"[numfield, numfield -> numfield]" number_fields
nil)
(exp_term const-decl
"real" exp_term
nil)
(abs const-decl
"{n: nonneg_real | n >= m AND n >= -m}" real_defs
nil)
(- const-decl
"[numfield -> numfield]" number_fields
nil)
(numfield nonempty-type-eq-decl
nil number_fields
nil)
(
AND const-decl
"[bool, bool -> bool]" booleans
nil)
(nonneg_real nonempty-type-eq-decl
nil real_types
nil)
(<= const-decl
"bool" reals
nil)
(/= const-decl
"boolean" notequal
nil)
(IMPLIES const-decl
"[bool, bool -> bool]" booleans
nil)
(pred type-eq-decl
nil defined_types
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)
(nnint_times_nnint_is_nnint application-judgement
"nonneg_int"
integers
nil)
(mult_divides1 application-judgement
"(divides(n))" divides
nil)
(mult_divides2 application-judgement
"(divides(m))" divides
nil))
shostak))
(exp_term_decr 0
(exp_term_decr-1
nil 3320472607
(
"" (skosimp)
((
"" (
expand "exp_term")
((
"" (case-replace
"n!1=0")
((
"1" (
expand "factorial")
((
"1" (
expand "factorial")
((
"1" (
rewrite "expt_x1")
((
"1" (
expand "abs" 2 2) ((
"1" (
assert)
nil nil))
nil))
nil))
nil))
nil)
(
"2" (
assert)
((
"2" (
rewrite "abs_div")
((
"2" (
rewrite "abs_div")
((
"2" (
expand "abs" 3 4)
((
"2" (
expand "abs" 3 2)
((
"2" (
rewrite "abs_expt" 3 :dir rl)
((
"2" (
rewrite "abs_expt" 3 :dir rl)
((
"2" (
case "0 < abs(a!1)")
((
"1" (
rewrite "expt_plus" 3)
((
"1" (
rewrite "expt_x1")
((
"1" (
expand "factorial" 3 1)
((
"1"
(lemma
"both_sides_times_pos_lt1"
(
"x"
"abs(a!1)/(1+n!1)"
"y"
"1"
"pz"
"abs(a!1) ^ n!1 / factorial(n!1)"))
((
"1"
(
rewrite "div_times" -1)
((
"1"
(
assert)
((
"1"
(hide 4)
((
"1"
(
rewrite "div_mult_pos_lt1" 1)
nil
nil))
nil))
nil))
nil)
(
"2"
(lemma
"expt_pos"
(
"px" "abs(a!1)" "i" "n!1"))
((
"1"
(
rewrite "div_mult_pos_gt1" 1)
((
"1" (
assert)
nil nil))
nil)
(
"2" (
assert)
nil nil))
nil))
nil))
nil))
nil))
nil)
(
"2" (
expand "abs")
((
"2" (
case "a!1<0")
((
"1" (
assert)
nil nil)
(
"2" (
assert)
nil nil))
nil))
nil))
nil))
nil))
nil))
nil))
nil))
nil))
nil))
nil))
nil))
nil))
nil)
((real_div_nzreal_is_real application-judgement
"real" reals
nil)
(exp_term const-decl
"real" exp_term
nil)
(nzint_abs_is_pos application-judgement
"{j: posint | j >= i}"
real_defs
nil)
(int_abs_is_nonneg application-judgement
"{j: nonneg_int | j >= i}"
real_defs
nil)
(nzrat_abs_is_pos application-judgement
"{r: posrat | r >= q}"
real_defs
nil)
(posint_plus_nnint_is_posint application-judgement
"posint"
integers
nil)
(minus_real_is_real application-judgement
"real" reals
nil)
(expt_plus formula-decl
nil exponentiation
nil)
(nnreal_times_nnreal_is_nnreal application-judgement
"nnreal"
real_types
nil)
(expt_pos formula-decl
nil exponentiation
nil)
(even_times_int_is_even application-judgement
"even_int" integers
nil)
(div_mult_pos_gt1 formula-decl
nil extra_real_props
nil)
(div_times formula-decl
nil real_props
nil)
(nnint_times_nnint_is_nnint application-judgement
"nonneg_int"
integers
nil)
(div_mult_pos_lt1 formula-decl
nil real_props
nil)
(real_gt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props
nil)
(/ const-decl
"[numfield, nznum -> numfield]" number_fields
nil)
(nznum nonempty-type-eq-decl
nil number_fields
nil)
(posreal nonempty-type-eq-decl
nil real_types
nil)
(both_sides_times_pos_lt1 formula-decl
nil real_props
nil)
(- const-decl
"[numfield -> numfield]" number_fields
nil)
(
AND const-decl
"[bool, bool -> bool]" booleans
nil)
(nonneg_real nonempty-type-eq-decl
nil real_types
nil)
(< const-decl
"bool" reals
nil)
(nnreal_exp application-judgement
"nnreal" exponentiation
nil)
(abs_expt formula-decl
nil exponentiation
nil)
(nzreal nonempty-type-eq-decl
nil reals
nil)
(nnreal_div_posreal_is_nnreal application-judgement
"nnreal"
real_types
nil)
(int_minus_int_is_int application-judgement
"int" integers
nil)
(^ const-decl
"real" exponentiation
nil)
(
OR const-decl
"[bool, bool -> bool]" booleans
nil)
(+ const-decl
"[numfield, numfield -> numfield]" number_fields
nil)
(numfield nonempty-type-eq-decl
nil number_fields
nil)
(posnat nonempty-type-eq-decl
nil integers
nil)
(> const-decl
"bool" reals
nil)
(nonneg_int nonempty-type-eq-decl
nil integers
nil)
(nonzero_real nonempty-type-eq-decl
nil reals
nil)
(/= const-decl
"boolean" notequal
nil)
(abs_div formula-decl
nil real_props
nil)
(posint_times_posint_is_posint application-judgement
"posint"
integers
nil)
(mult_divides1 application-judgement
"(divides(n))" divides
nil)
(mult_divides2 application-judgement
"(divides(m))" divides
nil)
(factorial def-decl
"posnat" factorial
"ints/")
(expt_x1 formula-decl
nil exponentiation
nil)
(even_plus_odd_is_odd application-judgement
"odd_int" integers
nil)
(nnint_plus_posint_is_posint application-judgement
"posint"
integers
nil)
(real_lt_is_strict_total_order name-judgement
"(strict_total_order?[real])" real_props
nil)
(abs const-decl
"{n: nonneg_real | n >= m AND n >= -m}" real_defs
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))
shostak))
(tends_to_0?_TCC1 0
(tends_to_0?_TCC1-1
nil 3320227935
(
"" (skosimp*) ((
"" (
assert)
nil nil))
nil)
((real_ge_is_total_order name-judgement
"(total_order?[real])"
real_props
nil))
shostak))
(exp_tends_to_0 0
(exp_tends_to_0-1
nil 3320228740
(
"" (skosimp)
((
"" (
expand "tends_to_0?")
((
"" (skosimp)
((
"" (
case "EXISTS n: abs(exp_term(n0a!1)(n)) < 1")
((
"1" (skosimp)
((
"1" (name
"N" "floor(abs(n0a!1)+1)")
((
"1" (lemma
"floor_def" (
"x" "abs(n0a!1)+1"))
((
"1" (
replace -2)
((
"1" (flatten)
((
"1" (
case "N>=1")
((
"1"
(
case "FORALL (px: posreal):
px < 1 IMPLIES (FORALL (py:posreal): EXISTS (n:posnat): px^n < py)
")
((
"1" (
case "0)
(("1" (case "0)
(("1" (inst - "abs(exp_term(n0a!1)(n!1))")
(("1"
(assert)
(("1"
(inst - "epsilon!1")
(("1"
(skosimp)
(("1"
(name "M" "max(N,n!2)*n!1")
(("1"
(inst + "M")
(("1"
(skosimp)
(("1"
(case
"forall (n:nat): abs(exp_term(n0a!1)(M+n)) <= abs(exp_term(n0a!1)(M))")
(("1"
(inst - "i!1-M")
(("1"
(assert)
(("1"
(lemma
"exp_term_power"
("a"
"n0a!1"
"n"
"n!1"
"m"
"max(N,n!2)"))
(("1"
(replace -3)
(("1"
(lemma
"both_sides_expt_lt1_le"
("lt1x"
"abs(exp_term(n0a!1)(n!1))"
"i"
"max(N,n!2)"
"j"
"n!2"))
(("1"
(assert)
nil
nil))
nil))
nil))
nil))
nil)
("2"
(expand "M")
(("2"
(expand "max")
(("2"
(case-replace
"N<=n!2")
(("1"
(assert)
(("1"
(case-replace
"N)
(("1"
(assert)
nil
nil)
("2"
(assert)
nil
nil))
nil))
nil)
("2"
(assert)
nil
nil))
nil))
nil))
nil))
nil)
("2"
(hide 2 -4)
(("2"
(induct "n")
(("1" (assert) nil nil)
("2"
(skosimp*)
(("2"
(expand "exp_term")
(("2"
(lemma
"expt_plus"
("n0x"
"n0a!1"
"i"
"1"
"j"
"M+j!1"))
(("2"
(rewrite
"expt_x1")
(("2"
(replace -1)
(("2"
(hide -1)
(("2"
(expand
"factorial"
1
1)
(("2"
(assert)
(("2"
(case
"M >=1")
(("1"
(assert)
(("1"
(rewrite
"abs_div"
1)
(("1"
(rewrite
"abs_div"
1)
(("1"
(rewrite
"abs_div"
-2)
(("1"
(expand
"abs"
-2
4)
(("1"
(expand
"abs"
-2
2)
(("1"
(expand
"abs"
1
4)
(("1"
(lemma
"posreal_times_posreal_is_posreal"
("px"
"1+M+j!1"
"py"
"factorial(M + j!1)"))
(("1"
(expand
"abs"
1
2)
(("1"
(assert)
(("1"
(rewrite
"abs_mult"
1)
(("1"
(lemma
"le_times_le_pos"
("nnx"
"abs(n0a!1)/(1+M+j!1)"
"y"
"1"
"nnz"
"abs(n0a!1 ^ (M + j!1)) / factorial(M + j!1)"
"w"
"abs(n0a!1 ^ M) / factorial(M)"))
(("1"
(assert)
(("1"
(split
-1)
(("1"
(assert)
(("1"
(rewrite
"div_times"
-1)
(("1"
(assert)
nil
nil))
nil))
nil)
("2"
(hide
-1
2)
(("2"
(rewrite
"div_mult_pos_le1"
1)
(("2"
(expand
"M")
(("2"
(expand
"max")
(("2"
(case-replace
"N<=n!2")
(("1"
(assert)
(("1"
(lemma
"le_times_le_pos"
("nnx"
"1"
"y"
"n!1"
"nnz"
"N"
"w"
"n!2"))
(("1"
(assert)
(("1"
(case-replace
"N)
(("1"
(assert)
nil
nil)
("2"
(assert)
nil
nil))
nil))
nil))
nil))
nil)
("2"
(assert)
(("2"
(lemma
"both_sides_times_pos_le1"
("pz"
"N"
"x"
"1"
"y"
"n!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)
("2"
(expand
"M")
(("2"
(expand
"max")
(("2"
(case-replace
"N<=n!2")
(("1"
(case-replace
"N)
(("1"
(assert)
(("1"
(case-replace
"n!1=0")
(("1"
(assert)
nil
nil)
("2"
(lemma
"posreal_times_posreal_is_posreal"
("px"
"n!2"
"py"
"n!1"))
(("1"
(assert)
nil
nil)
("2"
(assert)
nil
nil))
nil))
nil))
nil)
("2"
(assert)
(("2"
(case-replace
"n!1=0")
(("1"
(assert)
nil
nil)
("2"
(assert)
(("2"
(lemma
"posreal_times_posreal_is_posreal"
("px"
"N"
"py"
"n!1"))
(("2"
(assert)
nil
nil))
nil))
nil))
nil))
nil))
nil)
("2"
(assert)
(("2"
(lemma
"posreal_times_posreal_is_posreal"
("px"
"N"
"py"
"n!1"))
(("1"
(assert)
nil
nil)
("2"
(case-replace
"n!1=0")
(("1"
(assert)
nil
nil)
("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)
("2" (assert) nil nil))
nil)
("2" (hide-all-but (-1 1))
(("2"
(expand "exp_term")
(("2"
(rewrite "abs_div")
(("2"
(case-replace "n!1=0")
(("1"
(expand "abs")
(("1" (assert) nil nil))
nil)
("2" (assert) nil nil))
nil))
nil))
nil))
nil))
nil)
("2" (hide-all-but 1)
(("2" (expand "abs")
(("2"
(case-replace "n0a!1 < 0")
(("1" (assert) nil nil)
("2" (assert) nil nil))
nil))
nil))
nil))
nil)
("2" (hide-all-but 1)
(("2" (skosimp)
(("2" (lemma "small_expt" ("px" "px!1"))
(("2"
(assert)
(("2"
(skosimp*)
(("2"
(inst - "py!1")
(("2"
(skosimp)
(("2"
(case-replace "n!2=0")
(("1"
(assert)
(("1"
(expand "expt")
(("1"
(inst + "1")
(("1"
(rewrite "expt_x1")
(("1"
(assert)
nil
nil))
nil))
nil))
nil))
nil)
("2"
(inst + "n!2")
(("1"
(expand "^")
(("1" (propax) nil nil))
nil)
("2" (assert) nil nil))
nil))
nil))
nil))
nil))
nil))
nil))
nil))
nil))
nil))
nil)
("2" (assert) nil nil))
nil))
nil))
nil))
nil))
nil))
nil)
("2" (hide 2)
(("2"
(case "FORALL (n: nat, pn: posnat): pn ^ n <= factorial(pn + n)")
(("1" (lemma "floor_def" ("x" "abs(n0a!1) + 1"))
(("1" (flatten)
(("1" (expand "exp_term")
(("1" (name-replace "N" "floor(abs(n0a!1) + 1)")
(("1" (case "N>=1")
(("1" (assert)
(("1" (inst + "2*N*N")
(("1"
(lemma "both_sides_times_pos_le1"
("pz" "N" "x" "1" "y" "N"))
(("1"
(assert)
--> --------------------
--> maximum size reached
--> --------------------