TPTP Problem File: DAT137^1.p
View Solutions
- Solve Problem
%------------------------------------------------------------------------------
% File : DAT137^1 : TPTP v9.0.0. Released v7.0.0.
% Domain : Data Structures
% Problem : Coinductive list 4812
% Version : [Bla16] axioms : Especial.
% English :
% Refs : [Loc10] Lochbihler (2010), Coinductive
% : [RB15] Reynolds & Blanchette (2015), A Decision Procedure for
% : [Bla16] Blanchette (2016), Email to Geoff Sutcliffe
% Source : [Bla16]
% Names : coinductive_list__4812.p [Bla16]
% Status : Theorem
% Rating : 0.00 v7.2.0, 0.25 v7.1.0
% Syntax : Number of formulae : 359 ( 118 unt; 68 typ; 0 def)
% Number of atoms : 647 ( 291 equ; 0 cnn)
% Maximal formula atoms : 12 ( 2 avg)
% Number of connectives : 3388 ( 89 ~; 10 |; 22 &;2975 @)
% ( 0 <=>; 292 =>; 0 <=; 0 <~>)
% Maximal formula depth : 23 ( 6 avg)
% Number of types : 4 ( 3 usr)
% Number of type conns : 125 ( 125 >; 0 *; 0 +; 0 <<)
% Number of symbols : 68 ( 65 usr; 5 con; 0-4 aty)
% Number of variables : 837 ( 14 ^; 746 !; 24 ?; 837 :)
% ( 53 !>; 0 ?*; 0 @-; 0 @+)
% SPC : TH1_THM_EQU_NAR
% Comments : This file was generated by Isabelle (most likely Sledgehammer)
% 2016-07-13 15:09:14.032
%------------------------------------------------------------------------------
%----Could-be-implicit typings (6)
thf(ty_t_Coinductive__List__Mirabelle__kmikjhschf_Ollist,type,
coindu1593790203_llist: $tType > $tType ).
thf(ty_t_Extended__Nat_Oenat,type,
extended_enat: $tType ).
thf(ty_t_List_Olist,type,
list: $tType > $tType ).
thf(ty_t_Num_Onum,type,
num: $tType ).
thf(ty_t_Nat_Onat,type,
nat: $tType ).
thf(ty_t_itself,type,
itself: $tType > $tType ).
%----Explicit typings (62)
thf(sy_cl_HOL_Otype,type,
type:
!>[A: $tType] : ( ( itself @ A ) > $o ) ).
thf(sy_cl_Groups_Oone,type,
one:
!>[A: $tType] : ( ( itself @ A ) > $o ) ).
thf(sy_cl_Num_Onumeral,type,
numeral:
!>[A: $tType] : ( ( itself @ A ) > $o ) ).
thf(sy_cl_Rings_Oring__1,type,
ring_1:
!>[A: $tType] : ( ( itself @ A ) > $o ) ).
thf(sy_cl_Groups_Ouminus,type,
uminus:
!>[A: $tType] : ( ( itself @ A ) > $o ) ).
thf(sy_cl_Orderings_Oord,type,
ord:
!>[A: $tType] : ( ( itself @ A ) > $o ) ).
thf(sy_cl_Nat_Oring__char__0,type,
ring_char_0:
!>[A: $tType] : ( ( itself @ A ) > $o ) ).
thf(sy_cl_Num_Oneg__numeral,type,
neg_numeral:
!>[A: $tType] : ( ( itself @ A ) > $o ) ).
thf(sy_cl_Orderings_Oorder,type,
order:
!>[A: $tType] : ( ( itself @ A ) > $o ) ).
thf(sy_cl_Groups_Ogroup__add,type,
group_add:
!>[A: $tType] : ( ( itself @ A ) > $o ) ).
thf(sy_cl_Orderings_Olinorder,type,
linorder:
!>[A: $tType] : ( ( itself @ A ) > $o ) ).
thf(sy_cl_Groups_Oab__group__add,type,
ab_group_add:
!>[A: $tType] : ( ( itself @ A ) > $o ) ).
thf(sy_cl_Nat_Osemiring__char__0,type,
semiring_char_0:
!>[A: $tType] : ( ( itself @ A ) > $o ) ).
thf(sy_cl_Groups_Osemigroup__add,type,
semigroup_add:
!>[A: $tType] : ( ( itself @ A ) > $o ) ).
thf(sy_cl_Rings_Ocomm__semiring__1,type,
comm_semiring_1:
!>[A: $tType] : ( ( itself @ A ) > $o ) ).
thf(sy_cl_Rings_Olinordered__idom,type,
linordered_idom:
!>[A: $tType] : ( ( itself @ A ) > $o ) ).
thf(sy_cl_Fields_Olinordered__field,type,
linordered_field:
!>[A: $tType] : ( ( itself @ A ) > $o ) ).
thf(sy_cl_Groups_Oab__semigroup__add,type,
ab_semigroup_add:
!>[A: $tType] : ( ( itself @ A ) > $o ) ).
thf(sy_cl_Rings_Olinordered__semidom,type,
linordered_semidom:
!>[A: $tType] : ( ( itself @ A ) > $o ) ).
thf(sy_cl_Groups_Ocancel__semigroup__add,type,
cancel_semigroup_add:
!>[A: $tType] : ( ( itself @ A ) > $o ) ).
thf(sy_cl_Groups_Oordered__ab__group__add,type,
ordered_ab_group_add:
!>[A: $tType] : ( ( itself @ A ) > $o ) ).
thf(sy_cl_Groups_Oordered__ab__semigroup__add,type,
ordere779506340up_add:
!>[A: $tType] : ( ( itself @ A ) > $o ) ).
thf(sy_cl_Groups_Oordered__ab__semigroup__add__imp__le,type,
ordere236663937imp_le:
!>[A: $tType] : ( ( itself @ A ) > $o ) ).
thf(sy_cl_Groups_Oordered__cancel__ab__semigroup__add,type,
ordere223160158up_add:
!>[A: $tType] : ( ( itself @ A ) > $o ) ).
thf(sy_cl_Groups_Ostrict__ordered__ab__semigroup__add,type,
strict2144017051up_add:
!>[A: $tType] : ( ( itself @ A ) > $o ) ).
thf(sy_cl_Conditionally__Complete__Lattices_Olinear__continuum,type,
condit1656338222tinuum:
!>[A: $tType] : ( ( itself @ A ) > $o ) ).
thf(sy_c_Coinductive__List__Mirabelle__kmikjhschf_Ogen__llength,type,
coindu493225792length:
!>[A: $tType] : ( nat > ( coindu1593790203_llist @ A ) > extended_enat ) ).
thf(sy_c_Coinductive__List__Mirabelle__kmikjhschf_Olist__of__aux,type,
coindu1542816657of_aux:
!>[A: $tType] : ( ( list @ A ) > ( coindu1593790203_llist @ A ) > ( list @ A ) ) ).
thf(sy_c_Coinductive__List__Mirabelle__kmikjhschf_Ollist_OLCons,type,
coindu1121789889_LCons:
!>[A: $tType] : ( A > ( coindu1593790203_llist @ A ) > ( coindu1593790203_llist @ A ) ) ).
thf(sy_c_Coinductive__List__Mirabelle__kmikjhschf_Ollist_OLNil,type,
coindu1598213697e_LNil:
!>[A: $tType] : ( coindu1593790203_llist @ A ) ).
thf(sy_c_Coinductive__List__Mirabelle__kmikjhschf_Ollist__of,type,
coindu1079202755ist_of:
!>[A: $tType] : ( ( list @ A ) > ( coindu1593790203_llist @ A ) ) ).
thf(sy_c_Coinductive__List__Mirabelle__kmikjhschf_Olmember,type,
coindu567634248member:
!>[A: $tType] : ( A > ( coindu1593790203_llist @ A ) > $o ) ).
thf(sy_c_Groups_Oone__class_Oone,type,
one_one:
!>[A: $tType] : A ).
thf(sy_c_Groups_Oplus__class_Oplus,type,
plus_plus:
!>[A: $tType] : ( A > A > A ) ).
thf(sy_c_Groups_Ouminus__class_Ouminus,type,
uminus_uminus:
!>[A: $tType] : ( A > A ) ).
thf(sy_c_If,type,
if:
!>[A: $tType] : ( $o > A > A > A ) ).
thf(sy_c_List_Ocount__list,type,
count_list:
!>[A: $tType] : ( ( list @ A ) > A > nat ) ).
thf(sy_c_List_Ogen__length,type,
gen_length:
!>[A: $tType] : ( nat > ( list @ A ) > nat ) ).
thf(sy_c_List_Olist_OCons,type,
cons:
!>[A: $tType] : ( A > ( list @ A ) > ( list @ A ) ) ).
thf(sy_c_List_Olist_ONil,type,
nil:
!>[A: $tType] : ( list @ A ) ).
thf(sy_c_List_Omember,type,
member:
!>[A: $tType] : ( ( list @ A ) > A > $o ) ).
thf(sy_c_List_Onth,type,
nth:
!>[A: $tType] : ( ( list @ A ) > nat > A ) ).
thf(sy_c_List_Oord__class_Olexordp__eq,type,
ord_lexordp_eq:
!>[A: $tType] : ( ( list @ A ) > ( list @ A ) > $o ) ).
thf(sy_c_List_Oproduct__lists,type,
product_lists:
!>[A: $tType] : ( ( list @ ( list @ A ) ) > ( list @ ( list @ A ) ) ) ).
thf(sy_c_List_Osublists,type,
sublists:
!>[A: $tType] : ( ( list @ A ) > ( list @ ( list @ A ) ) ) ).
thf(sy_c_List_Oupt,type,
upt: nat > nat > ( list @ nat ) ).
thf(sy_c_Nat_OSuc,type,
suc: nat > nat ).
thf(sy_c_Nat__Bijection_Otriangle,type,
nat_triangle: nat > nat ).
thf(sy_c_Num_OBitM,type,
bitM: num > num ).
thf(sy_c_Num_Oinc,type,
inc: num > num ).
thf(sy_c_Num_Oneg__numeral__class_Odbl,type,
neg_numeral_dbl:
!>[A: $tType] : ( A > A ) ).
thf(sy_c_Num_Oneg__numeral__class_Odbl__dec,type,
neg_numeral_dbl_dec:
!>[A: $tType] : ( A > A ) ).
thf(sy_c_Num_Oneg__numeral__class_Osub,type,
neg_numeral_sub:
!>[A: $tType] : ( num > num > A ) ).
thf(sy_c_Num_Onum_OBit0,type,
bit0: num > num ).
thf(sy_c_Num_Onum_OOne,type,
one2: num ).
thf(sy_c_Num_Onumeral__class_Onumeral,type,
numeral_numeral:
!>[A: $tType] : ( num > A ) ).
thf(sy_c_Num_Oring__1__class_Oiszero,type,
ring_1_iszero:
!>[A: $tType] : ( A > $o ) ).
thf(sy_c_Orderings_Oord__class_Oless,type,
ord_less:
!>[A: $tType] : ( A > A > $o ) ).
thf(sy_c_Pure_Otype,type,
type2:
!>[A: $tType] : ( itself @ A ) ).
thf(sy_c_Sublist_Oprefixes,type,
prefixes:
!>[A: $tType] : ( ( list @ A ) > ( list @ ( list @ A ) ) ) ).
thf(sy_v_ma____,type,
ma: nat ).
thf(sy_v_na____,type,
na: nat ).
%----Relevant facts (251)
thf(fact_0_llist__of__inject,axiom,
! [A: $tType,Xs: list @ A,Ys: list @ A] :
( ( ( coindu1079202755ist_of @ A @ Xs )
= ( coindu1079202755ist_of @ A @ Ys ) )
= ( Xs = Ys ) ) ).
% llist_of_inject
thf(fact_1_add__Suc__right,axiom,
! [M: nat,N: nat] :
( ( plus_plus @ nat @ M @ ( suc @ N ) )
= ( suc @ ( plus_plus @ nat @ M @ N ) ) ) ).
% add_Suc_right
thf(fact_2_upt__conv__Cons__Cons,axiom,
! [M: nat,N: nat,Ns: list @ nat,Q: nat] :
( ( ( cons @ nat @ M @ ( cons @ nat @ N @ Ns ) )
= ( upt @ M @ Q ) )
= ( ( cons @ nat @ N @ Ns )
= ( upt @ ( suc @ M ) @ Q ) ) ) ).
% upt_conv_Cons_Cons
thf(fact_3_nat_Oinject,axiom,
! [X2: nat,Y2: nat] :
( ( ( suc @ X2 )
= ( suc @ Y2 ) )
= ( X2 = Y2 ) ) ).
% nat.inject
thf(fact_4_old_Onat_Oinject,axiom,
! [Nat: nat,Nat2: nat] :
( ( ( suc @ Nat )
= ( suc @ Nat2 ) )
= ( Nat = Nat2 ) ) ).
% old.nat.inject
thf(fact_5_add__left__cancel,axiom,
! [A: $tType] :
( ( cancel_semigroup_add @ A @ ( type2 @ A ) )
=> ! [A2: A,B: A,C: A] :
( ( ( plus_plus @ A @ A2 @ B )
= ( plus_plus @ A @ A2 @ C ) )
= ( B = C ) ) ) ).
% add_left_cancel
thf(fact_6_add__right__cancel,axiom,
! [A: $tType] :
( ( cancel_semigroup_add @ A @ ( type2 @ A ) )
=> ! [B: A,A2: A,C: A] :
( ( ( plus_plus @ A @ B @ A2 )
= ( plus_plus @ A @ C @ A2 ) )
= ( B = C ) ) ) ).
% add_right_cancel
thf(fact_7_list_Oinject,axiom,
! [A: $tType,X21: A,X22: list @ A,Y21: A,Y22: list @ A] :
( ( ( cons @ A @ X21 @ X22 )
= ( cons @ A @ Y21 @ Y22 ) )
= ( ( X21 = Y21 )
& ( X22 = Y22 ) ) ) ).
% list.inject
thf(fact_8_add__Suc__shift,axiom,
! [M: nat,N: nat] :
( ( plus_plus @ nat @ ( suc @ M ) @ N )
= ( plus_plus @ nat @ M @ ( suc @ N ) ) ) ).
% add_Suc_shift
thf(fact_9_add__Suc,axiom,
! [M: nat,N: nat] :
( ( plus_plus @ nat @ ( suc @ M ) @ N )
= ( suc @ ( plus_plus @ nat @ M @ N ) ) ) ).
% add_Suc
thf(fact_10__092_060open_062_092_060And_062xs_Ax_O_ALCons_Ax_A_Illist__of_Axs_J_A_061_Allist__of_A_Ix_A_D_Axs_J_092_060close_062,axiom,
! [A: $tType,X: A,Xs: list @ A] :
( ( coindu1121789889_LCons @ A @ X @ ( coindu1079202755ist_of @ A @ Xs ) )
= ( coindu1079202755ist_of @ A @ ( cons @ A @ X @ Xs ) ) ) ).
% \<open>\<And>xs x. LCons x (llist_of xs) = llist_of (x # xs)\<close>
thf(fact_11_nat__add__left__cancel,axiom,
! [K: nat,M: nat,N: nat] :
( ( ( plus_plus @ nat @ K @ M )
= ( plus_plus @ nat @ K @ N ) )
= ( M = N ) ) ).
% nat_add_left_cancel
thf(fact_12_llist_Oinject,axiom,
! [A: $tType,X21: A,X22: coindu1593790203_llist @ A,Y21: A,Y22: coindu1593790203_llist @ A] :
( ( ( coindu1121789889_LCons @ A @ X21 @ X22 )
= ( coindu1121789889_LCons @ A @ Y21 @ Y22 ) )
= ( ( X21 = Y21 )
& ( X22 = Y22 ) ) ) ).
% llist.inject
thf(fact_13_llist__of__eq__LCons__conv,axiom,
! [A: $tType,Xs: list @ A,Y: A,Ys: coindu1593790203_llist @ A] :
( ( ( coindu1079202755ist_of @ A @ Xs )
= ( coindu1121789889_LCons @ A @ Y @ Ys ) )
= ( ? [Xs2: list @ A] :
( ( Xs
= ( cons @ A @ Y @ Xs2 ) )
& ( Ys
= ( coindu1079202755ist_of @ A @ Xs2 ) ) ) ) ) ).
% llist_of_eq_LCons_conv
thf(fact_14_not__Cons__self2,axiom,
! [A: $tType,X: A,Xs: list @ A] :
( ( cons @ A @ X @ Xs )
!= Xs ) ).
% not_Cons_self2
thf(fact_15_add__right__imp__eq,axiom,
! [A: $tType] :
( ( cancel_semigroup_add @ A @ ( type2 @ A ) )
=> ! [B: A,A2: A,C: A] :
( ( ( plus_plus @ A @ B @ A2 )
= ( plus_plus @ A @ C @ A2 ) )
=> ( B = C ) ) ) ).
% add_right_imp_eq
thf(fact_16_add__left__imp__eq,axiom,
! [A: $tType] :
( ( cancel_semigroup_add @ A @ ( type2 @ A ) )
=> ! [A2: A,B: A,C: A] :
( ( ( plus_plus @ A @ A2 @ B )
= ( plus_plus @ A @ A2 @ C ) )
=> ( B = C ) ) ) ).
% add_left_imp_eq
thf(fact_17_add_Oleft__commute,axiom,
! [A: $tType] :
( ( ab_semigroup_add @ A @ ( type2 @ A ) )
=> ! [B: A,A2: A,C: A] :
( ( plus_plus @ A @ B @ ( plus_plus @ A @ A2 @ C ) )
= ( plus_plus @ A @ A2 @ ( plus_plus @ A @ B @ C ) ) ) ) ).
% add.left_commute
thf(fact_18_add_Ocommute,axiom,
! [A: $tType] :
( ( ab_semigroup_add @ A @ ( type2 @ A ) )
=> ( ( plus_plus @ A )
= ( ^ [A3: A,B2: A] : ( plus_plus @ A @ B2 @ A3 ) ) ) ) ).
% add.commute
thf(fact_19_add_Oright__cancel,axiom,
! [A: $tType] :
( ( group_add @ A @ ( type2 @ A ) )
=> ! [B: A,A2: A,C: A] :
( ( ( plus_plus @ A @ B @ A2 )
= ( plus_plus @ A @ C @ A2 ) )
= ( B = C ) ) ) ).
% add.right_cancel
thf(fact_20_add_Oleft__cancel,axiom,
! [A: $tType] :
( ( group_add @ A @ ( type2 @ A ) )
=> ! [A2: A,B: A,C: A] :
( ( ( plus_plus @ A @ A2 @ B )
= ( plus_plus @ A @ A2 @ C ) )
= ( B = C ) ) ) ).
% add.left_cancel
thf(fact_21_add_Oassoc,axiom,
! [A: $tType] :
( ( semigroup_add @ A @ ( type2 @ A ) )
=> ! [A2: A,B: A,C: A] :
( ( plus_plus @ A @ ( plus_plus @ A @ A2 @ B ) @ C )
= ( plus_plus @ A @ A2 @ ( plus_plus @ A @ B @ C ) ) ) ) ).
% add.assoc
thf(fact_22_add__mono__thms__linordered__semiring_I4_J,axiom,
! [A: $tType] :
( ( ordere779506340up_add @ A @ ( type2 @ A ) )
=> ! [I: A,J: A,K: A,L: A] :
( ( ( I = J )
& ( K = L ) )
=> ( ( plus_plus @ A @ I @ K )
= ( plus_plus @ A @ J @ L ) ) ) ) ).
% add_mono_thms_linordered_semiring(4)
thf(fact_23_ab__semigroup__add__class_Oadd__ac_I1_J,axiom,
! [A: $tType] :
( ( ab_semigroup_add @ A @ ( type2 @ A ) )
=> ! [A2: A,B: A,C: A] :
( ( plus_plus @ A @ ( plus_plus @ A @ A2 @ B ) @ C )
= ( plus_plus @ A @ A2 @ ( plus_plus @ A @ B @ C ) ) ) ) ).
% ab_semigroup_add_class.add_ac(1)
thf(fact_24_n__not__Suc__n,axiom,
! [N: nat] :
( N
!= ( suc @ N ) ) ).
% n_not_Suc_n
thf(fact_25_Suc__inject,axiom,
! [X: nat,Y: nat] :
( ( ( suc @ X )
= ( suc @ Y ) )
=> ( X = Y ) ) ).
% Suc_inject
thf(fact_26_nat__add__right__cancel,axiom,
! [M: nat,K: nat,N: nat] :
( ( ( plus_plus @ nat @ M @ K )
= ( plus_plus @ nat @ N @ K ) )
= ( M = N ) ) ).
% nat_add_right_cancel
thf(fact_27_list__of__aux__code_I2_J,axiom,
! [A: $tType,Xs: list @ A,Y: A,Ys: coindu1593790203_llist @ A] :
( ( coindu1542816657of_aux @ A @ Xs @ ( coindu1121789889_LCons @ A @ Y @ Ys ) )
= ( coindu1542816657of_aux @ A @ ( cons @ A @ Y @ Xs ) @ Ys ) ) ).
% list_of_aux_code(2)
thf(fact_28_gen__length__code_I2_J,axiom,
! [B3: $tType,N: nat,X: B3,Xs: list @ B3] :
( ( gen_length @ B3 @ N @ ( cons @ B3 @ X @ Xs ) )
= ( gen_length @ B3 @ ( suc @ N ) @ Xs ) ) ).
% gen_length_code(2)
thf(fact_29_upt__conv__Cons,axiom,
! [I: nat,J: nat] :
( ( ord_less @ nat @ I @ J )
=> ( ( upt @ I @ J )
= ( cons @ nat @ I @ ( upt @ ( suc @ I ) @ J ) ) ) ) ).
% upt_conv_Cons
thf(fact_30_lmember__code_I2_J,axiom,
! [A: $tType,X: A,Y: A,Ys: coindu1593790203_llist @ A] :
( ( coindu567634248member @ A @ X @ ( coindu1121789889_LCons @ A @ Y @ Ys ) )
= ( ( X = Y )
| ( coindu567634248member @ A @ X @ Ys ) ) ) ).
% lmember_code(2)
thf(fact_31_semiring__normalization__rules_I20_J,axiom,
! [A: $tType] :
( ( comm_semiring_1 @ A @ ( type2 @ A ) )
=> ! [A2: A,B: A,C: A,D: A] :
( ( plus_plus @ A @ ( plus_plus @ A @ A2 @ B ) @ ( plus_plus @ A @ C @ D ) )
= ( plus_plus @ A @ ( plus_plus @ A @ A2 @ C ) @ ( plus_plus @ A @ B @ D ) ) ) ) ).
% semiring_normalization_rules(20)
thf(fact_32_semiring__normalization__rules_I21_J,axiom,
! [A: $tType] :
( ( comm_semiring_1 @ A @ ( type2 @ A ) )
=> ! [A2: A,B: A,C: A] :
( ( plus_plus @ A @ ( plus_plus @ A @ A2 @ B ) @ C )
= ( plus_plus @ A @ A2 @ ( plus_plus @ A @ B @ C ) ) ) ) ).
% semiring_normalization_rules(21)
thf(fact_33_semiring__normalization__rules_I22_J,axiom,
! [A: $tType] :
( ( comm_semiring_1 @ A @ ( type2 @ A ) )
=> ! [A2: A,C: A,D: A] :
( ( plus_plus @ A @ A2 @ ( plus_plus @ A @ C @ D ) )
= ( plus_plus @ A @ C @ ( plus_plus @ A @ A2 @ D ) ) ) ) ).
% semiring_normalization_rules(22)
thf(fact_34_semiring__normalization__rules_I23_J,axiom,
! [A: $tType] :
( ( comm_semiring_1 @ A @ ( type2 @ A ) )
=> ! [A2: A,B: A,C: A] :
( ( plus_plus @ A @ ( plus_plus @ A @ A2 @ B ) @ C )
= ( plus_plus @ A @ ( plus_plus @ A @ A2 @ C ) @ B ) ) ) ).
% semiring_normalization_rules(23)
thf(fact_35_semiring__normalization__rules_I24_J,axiom,
! [A: $tType] :
( ( comm_semiring_1 @ A @ ( type2 @ A ) )
=> ( ( plus_plus @ A )
= ( ^ [A3: A,C2: A] : ( plus_plus @ A @ C2 @ A3 ) ) ) ) ).
% semiring_normalization_rules(24)
thf(fact_36_semiring__normalization__rules_I25_J,axiom,
! [A: $tType] :
( ( comm_semiring_1 @ A @ ( type2 @ A ) )
=> ! [A2: A,C: A,D: A] :
( ( plus_plus @ A @ A2 @ ( plus_plus @ A @ C @ D ) )
= ( plus_plus @ A @ ( plus_plus @ A @ A2 @ C ) @ D ) ) ) ).
% semiring_normalization_rules(25)
thf(fact_37_linordered__field__class_Osign__simps_I26_J,axiom,
! [A: $tType] :
( ( linordered_field @ A @ ( type2 @ A ) )
=> ! [A2: A,B: A,C: A] :
( ( plus_plus @ A @ ( plus_plus @ A @ A2 @ B ) @ C )
= ( plus_plus @ A @ A2 @ ( plus_plus @ A @ B @ C ) ) ) ) ).
% linordered_field_class.sign_simps(26)
thf(fact_38_add__less__cancel__left,axiom,
! [A: $tType] :
( ( ordere236663937imp_le @ A @ ( type2 @ A ) )
=> ! [C: A,A2: A,B: A] :
( ( ord_less @ A @ ( plus_plus @ A @ C @ A2 ) @ ( plus_plus @ A @ C @ B ) )
= ( ord_less @ A @ A2 @ B ) ) ) ).
% add_less_cancel_left
thf(fact_39_add__less__cancel__right,axiom,
! [A: $tType] :
( ( ordere236663937imp_le @ A @ ( type2 @ A ) )
=> ! [A2: A,C: A,B: A] :
( ( ord_less @ A @ ( plus_plus @ A @ A2 @ C ) @ ( plus_plus @ A @ B @ C ) )
= ( ord_less @ A @ A2 @ B ) ) ) ).
% add_less_cancel_right
thf(fact_40_lessI,axiom,
! [N: nat] : ( ord_less @ nat @ N @ ( suc @ N ) ) ).
% lessI
thf(fact_41_Suc__mono,axiom,
! [M: nat,N: nat] :
( ( ord_less @ nat @ M @ N )
=> ( ord_less @ nat @ ( suc @ M ) @ ( suc @ N ) ) ) ).
% Suc_mono
thf(fact_42_Suc__less__eq,axiom,
! [M: nat,N: nat] :
( ( ord_less @ nat @ ( suc @ M ) @ ( suc @ N ) )
= ( ord_less @ nat @ M @ N ) ) ).
% Suc_less_eq
thf(fact_43_nat__add__left__cancel__less,axiom,
! [K: nat,M: nat,N: nat] :
( ( ord_less @ nat @ ( plus_plus @ nat @ K @ M ) @ ( plus_plus @ nat @ K @ N ) )
= ( ord_less @ nat @ M @ N ) ) ).
% nat_add_left_cancel_less
thf(fact_44_nat__neq__iff,axiom,
! [M: nat,N: nat] :
( ( M != N )
= ( ( ord_less @ nat @ M @ N )
| ( ord_less @ nat @ N @ M ) ) ) ).
% nat_neq_iff
thf(fact_45_less__not__refl,axiom,
! [N: nat] :
~ ( ord_less @ nat @ N @ N ) ).
% less_not_refl
thf(fact_46_less__not__refl2,axiom,
! [N: nat,M: nat] :
( ( ord_less @ nat @ N @ M )
=> ( M != N ) ) ).
% less_not_refl2
thf(fact_47_less__not__refl3,axiom,
! [S: nat,T: nat] :
( ( ord_less @ nat @ S @ T )
=> ( S != T ) ) ).
% less_not_refl3
thf(fact_48_measure__induct,axiom,
! [A: $tType,F: A > nat,P: A > $o,A2: A] :
( ! [X3: A] :
( ! [Y3: A] :
( ( ord_less @ nat @ ( F @ Y3 ) @ ( F @ X3 ) )
=> ( P @ Y3 ) )
=> ( P @ X3 ) )
=> ( P @ A2 ) ) ).
% measure_induct
thf(fact_49_less__irrefl__nat,axiom,
! [N: nat] :
~ ( ord_less @ nat @ N @ N ) ).
% less_irrefl_nat
thf(fact_50_nat__less__induct,axiom,
! [P: nat > $o,N: nat] :
( ! [N2: nat] :
( ! [M2: nat] :
( ( ord_less @ nat @ M2 @ N2 )
=> ( P @ M2 ) )
=> ( P @ N2 ) )
=> ( P @ N ) ) ).
% nat_less_induct
thf(fact_51_infinite__descent,axiom,
! [P: nat > $o,N: nat] :
( ! [N2: nat] :
( ~ ( P @ N2 )
=> ? [M2: nat] :
( ( ord_less @ nat @ M2 @ N2 )
& ~ ( P @ M2 ) ) )
=> ( P @ N ) ) ).
% infinite_descent
thf(fact_52_linorder__neqE__nat,axiom,
! [X: nat,Y: nat] :
( ( X != Y )
=> ( ~ ( ord_less @ nat @ X @ Y )
=> ( ord_less @ nat @ Y @ X ) ) ) ).
% linorder_neqE_nat
thf(fact_53_measure__induct__rule,axiom,
! [A: $tType,F: A > nat,P: A > $o,A2: A] :
( ! [X3: A] :
( ! [Y3: A] :
( ( ord_less @ nat @ ( F @ Y3 ) @ ( F @ X3 ) )
=> ( P @ Y3 ) )
=> ( P @ X3 ) )
=> ( P @ A2 ) ) ).
% measure_induct_rule
thf(fact_54_infinite__descent__measure,axiom,
! [A: $tType,P: A > $o,V: A > nat,X: A] :
( ! [X3: A] :
( ~ ( P @ X3 )
=> ? [Y3: A] :
( ( ord_less @ nat @ ( V @ Y3 ) @ ( V @ X3 ) )
& ~ ( P @ Y3 ) ) )
=> ( P @ X ) ) ).
% infinite_descent_measure
thf(fact_55_linordered__field__no__ub,axiom,
! [A: $tType] :
( ( linordered_field @ A @ ( type2 @ A ) )
=> ! [X4: A] :
? [X1: A] : ( ord_less @ A @ X4 @ X1 ) ) ).
% linordered_field_no_ub
thf(fact_56_linordered__field__no__lb,axiom,
! [A: $tType] :
( ( linordered_field @ A @ ( type2 @ A ) )
=> ! [X4: A] :
? [Y4: A] : ( ord_less @ A @ Y4 @ X4 ) ) ).
% linordered_field_no_lb
thf(fact_57_lift__Suc__mono__less__iff,axiom,
! [A: $tType] :
( ( order @ A @ ( type2 @ A ) )
=> ! [F: nat > A,N: nat,M: nat] :
( ! [N2: nat] : ( ord_less @ A @ ( F @ N2 ) @ ( F @ ( suc @ N2 ) ) )
=> ( ( ord_less @ A @ ( F @ N ) @ ( F @ M ) )
= ( ord_less @ nat @ N @ M ) ) ) ) ).
% lift_Suc_mono_less_iff
thf(fact_58_lift__Suc__mono__less,axiom,
! [A: $tType] :
( ( order @ A @ ( type2 @ A ) )
=> ! [F: nat > A,N: nat,N3: nat] :
( ! [N2: nat] : ( ord_less @ A @ ( F @ N2 ) @ ( F @ ( suc @ N2 ) ) )
=> ( ( ord_less @ nat @ N @ N3 )
=> ( ord_less @ A @ ( F @ N ) @ ( F @ N3 ) ) ) ) ) ).
% lift_Suc_mono_less
thf(fact_59_add__mono__thms__linordered__field_I5_J,axiom,
! [A: $tType] :
( ( ordere223160158up_add @ A @ ( type2 @ A ) )
=> ! [I: A,J: A,K: A,L: A] :
( ( ( ord_less @ A @ I @ J )
& ( ord_less @ A @ K @ L ) )
=> ( ord_less @ A @ ( plus_plus @ A @ I @ K ) @ ( plus_plus @ A @ J @ L ) ) ) ) ).
% add_mono_thms_linordered_field(5)
thf(fact_60_add__mono__thms__linordered__field_I2_J,axiom,
! [A: $tType] :
( ( ordere223160158up_add @ A @ ( type2 @ A ) )
=> ! [I: A,J: A,K: A,L: A] :
( ( ( I = J )
& ( ord_less @ A @ K @ L ) )
=> ( ord_less @ A @ ( plus_plus @ A @ I @ K ) @ ( plus_plus @ A @ J @ L ) ) ) ) ).
% add_mono_thms_linordered_field(2)
thf(fact_61_add__mono__thms__linordered__field_I1_J,axiom,
! [A: $tType] :
( ( ordere223160158up_add @ A @ ( type2 @ A ) )
=> ! [I: A,J: A,K: A,L: A] :
( ( ( ord_less @ A @ I @ J )
& ( K = L ) )
=> ( ord_less @ A @ ( plus_plus @ A @ I @ K ) @ ( plus_plus @ A @ J @ L ) ) ) ) ).
% add_mono_thms_linordered_field(1)
thf(fact_62_add__strict__mono,axiom,
! [A: $tType] :
( ( strict2144017051up_add @ A @ ( type2 @ A ) )
=> ! [A2: A,B: A,C: A,D: A] :
( ( ord_less @ A @ A2 @ B )
=> ( ( ord_less @ A @ C @ D )
=> ( ord_less @ A @ ( plus_plus @ A @ A2 @ C ) @ ( plus_plus @ A @ B @ D ) ) ) ) ) ).
% add_strict_mono
thf(fact_63_add__strict__left__mono,axiom,
! [A: $tType] :
( ( ordere223160158up_add @ A @ ( type2 @ A ) )
=> ! [A2: A,B: A,C: A] :
( ( ord_less @ A @ A2 @ B )
=> ( ord_less @ A @ ( plus_plus @ A @ C @ A2 ) @ ( plus_plus @ A @ C @ B ) ) ) ) ).
% add_strict_left_mono
thf(fact_64_add__strict__right__mono,axiom,
! [A: $tType] :
( ( ordere223160158up_add @ A @ ( type2 @ A ) )
=> ! [A2: A,B: A,C: A] :
( ( ord_less @ A @ A2 @ B )
=> ( ord_less @ A @ ( plus_plus @ A @ A2 @ C ) @ ( plus_plus @ A @ B @ C ) ) ) ) ).
% add_strict_right_mono
thf(fact_65_add__less__imp__less__left,axiom,
! [A: $tType] :
( ( ordere236663937imp_le @ A @ ( type2 @ A ) )
=> ! [C: A,A2: A,B: A] :
( ( ord_less @ A @ ( plus_plus @ A @ C @ A2 ) @ ( plus_plus @ A @ C @ B ) )
=> ( ord_less @ A @ A2 @ B ) ) ) ).
% add_less_imp_less_left
thf(fact_66_add__less__imp__less__right,axiom,
! [A: $tType] :
( ( ordere236663937imp_le @ A @ ( type2 @ A ) )
=> ! [A2: A,C: A,B: A] :
( ( ord_less @ A @ ( plus_plus @ A @ A2 @ C ) @ ( plus_plus @ A @ B @ C ) )
=> ( ord_less @ A @ A2 @ B ) ) ) ).
% add_less_imp_less_right
thf(fact_67_lessE,axiom,
! [I: nat,K: nat] :
( ( ord_less @ nat @ I @ K )
=> ( ( K
!= ( suc @ I ) )
=> ~ ! [J2: nat] :
( ( ord_less @ nat @ I @ J2 )
=> ( K
!= ( suc @ J2 ) ) ) ) ) ).
% lessE
thf(fact_68_Suc__lessD,axiom,
! [M: nat,N: nat] :
( ( ord_less @ nat @ ( suc @ M ) @ N )
=> ( ord_less @ nat @ M @ N ) ) ).
% Suc_lessD
thf(fact_69_Suc__lessE,axiom,
! [I: nat,K: nat] :
( ( ord_less @ nat @ ( suc @ I ) @ K )
=> ~ ! [J2: nat] :
( ( ord_less @ nat @ I @ J2 )
=> ( K
!= ( suc @ J2 ) ) ) ) ).
% Suc_lessE
thf(fact_70_Suc__lessI,axiom,
! [M: nat,N: nat] :
( ( ord_less @ nat @ M @ N )
=> ( ( ( suc @ M )
!= N )
=> ( ord_less @ nat @ ( suc @ M ) @ N ) ) ) ).
% Suc_lessI
thf(fact_71_less__SucE,axiom,
! [M: nat,N: nat] :
( ( ord_less @ nat @ M @ ( suc @ N ) )
=> ( ~ ( ord_less @ nat @ M @ N )
=> ( M = N ) ) ) ).
% less_SucE
thf(fact_72_less__SucI,axiom,
! [M: nat,N: nat] :
( ( ord_less @ nat @ M @ N )
=> ( ord_less @ nat @ M @ ( suc @ N ) ) ) ).
% less_SucI
thf(fact_73_less__Suc__eq,axiom,
! [M: nat,N: nat] :
( ( ord_less @ nat @ M @ ( suc @ N ) )
= ( ( ord_less @ nat @ M @ N )
| ( M = N ) ) ) ).
% less_Suc_eq
thf(fact_74_not__less__eq,axiom,
! [M: nat,N: nat] :
( ( ~ ( ord_less @ nat @ M @ N ) )
= ( ord_less @ nat @ N @ ( suc @ M ) ) ) ).
% not_less_eq
thf(fact_75_Suc__less__eq2,axiom,
! [N: nat,M: nat] :
( ( ord_less @ nat @ ( suc @ N ) @ M )
= ( ? [M3: nat] :
( ( M
= ( suc @ M3 ) )
& ( ord_less @ nat @ N @ M3 ) ) ) ) ).
% Suc_less_eq2
thf(fact_76_less__antisym,axiom,
! [N: nat,M: nat] :
( ~ ( ord_less @ nat @ N @ M )
=> ( ( ord_less @ nat @ N @ ( suc @ M ) )
=> ( M = N ) ) ) ).
% less_antisym
thf(fact_77_Suc__less__SucD,axiom,
! [M: nat,N: nat] :
( ( ord_less @ nat @ ( suc @ M ) @ ( suc @ N ) )
=> ( ord_less @ nat @ M @ N ) ) ).
% Suc_less_SucD
thf(fact_78_less__trans__Suc,axiom,
! [I: nat,J: nat,K: nat] :
( ( ord_less @ nat @ I @ J )
=> ( ( ord_less @ nat @ J @ K )
=> ( ord_less @ nat @ ( suc @ I ) @ K ) ) ) ).
% less_trans_Suc
thf(fact_79_less__Suc__induct,axiom,
! [I: nat,J: nat,P: nat > nat > $o] :
( ( ord_less @ nat @ I @ J )
=> ( ! [I2: nat] : ( P @ I2 @ ( suc @ I2 ) )
=> ( ! [I2: nat,J2: nat,K2: nat] :
( ( ord_less @ nat @ I2 @ J2 )
=> ( ( ord_less @ nat @ J2 @ K2 )
=> ( ( P @ I2 @ J2 )
=> ( ( P @ J2 @ K2 )
=> ( P @ I2 @ K2 ) ) ) ) )
=> ( P @ I @ J ) ) ) ) ).
% less_Suc_induct
thf(fact_80_strict__inc__induct,axiom,
! [I: nat,J: nat,P: nat > $o] :
( ( ord_less @ nat @ I @ J )
=> ( ! [I2: nat] :
( ( J
= ( suc @ I2 ) )
=> ( P @ I2 ) )
=> ( ! [I2: nat] :
( ( ord_less @ nat @ I2 @ J )
=> ( ( P @ ( suc @ I2 ) )
=> ( P @ I2 ) ) )
=> ( P @ I ) ) ) ) ).
% strict_inc_induct
thf(fact_81_not__less__less__Suc__eq,axiom,
! [N: nat,M: nat] :
( ~ ( ord_less @ nat @ N @ M )
=> ( ( ord_less @ nat @ N @ ( suc @ M ) )
= ( N = M ) ) ) ).
% not_less_less_Suc_eq
thf(fact_82_add__lessD1,axiom,
! [I: nat,J: nat,K: nat] :
( ( ord_less @ nat @ ( plus_plus @ nat @ I @ J ) @ K )
=> ( ord_less @ nat @ I @ K ) ) ).
% add_lessD1
thf(fact_83_add__less__mono,axiom,
! [I: nat,J: nat,K: nat,L: nat] :
( ( ord_less @ nat @ I @ J )
=> ( ( ord_less @ nat @ K @ L )
=> ( ord_less @ nat @ ( plus_plus @ nat @ I @ K ) @ ( plus_plus @ nat @ J @ L ) ) ) ) ).
% add_less_mono
thf(fact_84_not__add__less1,axiom,
! [I: nat,J: nat] :
~ ( ord_less @ nat @ ( plus_plus @ nat @ I @ J ) @ I ) ).
% not_add_less1
thf(fact_85_not__add__less2,axiom,
! [J: nat,I: nat] :
~ ( ord_less @ nat @ ( plus_plus @ nat @ J @ I ) @ I ) ).
% not_add_less2
thf(fact_86_add__less__mono1,axiom,
! [I: nat,J: nat,K: nat] :
( ( ord_less @ nat @ I @ J )
=> ( ord_less @ nat @ ( plus_plus @ nat @ I @ K ) @ ( plus_plus @ nat @ J @ K ) ) ) ).
% add_less_mono1
thf(fact_87_trans__less__add1,axiom,
! [I: nat,J: nat,M: nat] :
( ( ord_less @ nat @ I @ J )
=> ( ord_less @ nat @ I @ ( plus_plus @ nat @ J @ M ) ) ) ).
% trans_less_add1
thf(fact_88_trans__less__add2,axiom,
! [I: nat,J: nat,M: nat] :
( ( ord_less @ nat @ I @ J )
=> ( ord_less @ nat @ I @ ( plus_plus @ nat @ M @ J ) ) ) ).
% trans_less_add2
thf(fact_89_less__add__eq__less,axiom,
! [K: nat,L: nat,M: nat,N: nat] :
( ( ord_less @ nat @ K @ L )
=> ( ( ( plus_plus @ nat @ M @ L )
= ( plus_plus @ nat @ K @ N ) )
=> ( ord_less @ nat @ M @ N ) ) ) ).
% less_add_eq_less
thf(fact_90_less__add__Suc1,axiom,
! [I: nat,M: nat] : ( ord_less @ nat @ I @ ( suc @ ( plus_plus @ nat @ I @ M ) ) ) ).
% less_add_Suc1
thf(fact_91_less__add__Suc2,axiom,
! [I: nat,M: nat] : ( ord_less @ nat @ I @ ( suc @ ( plus_plus @ nat @ M @ I ) ) ) ).
% less_add_Suc2
thf(fact_92_less__iff__Suc__add,axiom,
( ( ord_less @ nat )
= ( ^ [M4: nat,N4: nat] :
? [K3: nat] :
( N4
= ( suc @ ( plus_plus @ nat @ M4 @ K3 ) ) ) ) ) ).
% less_iff_Suc_add
thf(fact_93_less__imp__Suc__add,axiom,
! [M: nat,N: nat] :
( ( ord_less @ nat @ M @ N )
=> ? [K2: nat] :
( N
= ( suc @ ( plus_plus @ nat @ M @ K2 ) ) ) ) ).
% less_imp_Suc_add
thf(fact_94_linordered__field__class_Osign__simps_I28_J,axiom,
! [A: $tType] :
( ( linordered_field @ A @ ( type2 @ A ) )
=> ! [B: A,A2: A,C: A] :
( ( plus_plus @ A @ B @ ( plus_plus @ A @ A2 @ C ) )
= ( plus_plus @ A @ A2 @ ( plus_plus @ A @ B @ C ) ) ) ) ).
% linordered_field_class.sign_simps(28)
thf(fact_95_linordered__field__class_Osign__simps_I27_J,axiom,
! [A: $tType] :
( ( linordered_field @ A @ ( type2 @ A ) )
=> ( ( plus_plus @ A )
= ( ^ [A3: A,B2: A] : ( plus_plus @ A @ B2 @ A3 ) ) ) ) ).
% linordered_field_class.sign_simps(27)
thf(fact_96_upt__eq__Cons__conv,axiom,
! [I: nat,J: nat,X: nat,Xs: list @ nat] :
( ( ( upt @ I @ J )
= ( cons @ nat @ X @ Xs ) )
= ( ( ord_less @ nat @ I @ J )
& ( I = X )
& ( ( upt @ ( plus_plus @ nat @ I @ ( one_one @ nat ) ) @ J )
= Xs ) ) ) ).
% upt_eq_Cons_conv
thf(fact_97_upt__rec,axiom,
( upt
= ( ^ [I3: nat,J3: nat] : ( if @ ( list @ nat ) @ ( ord_less @ nat @ I3 @ J3 ) @ ( cons @ nat @ I3 @ ( upt @ ( suc @ I3 ) @ J3 ) ) @ ( nil @ nat ) ) ) ) ).
% upt_rec
thf(fact_98_nth__upt,axiom,
! [I: nat,K: nat,J: nat] :
( ( ord_less @ nat @ ( plus_plus @ nat @ I @ K ) @ J )
=> ( ( nth @ nat @ ( upt @ I @ J ) @ K )
= ( plus_plus @ nat @ I @ K ) ) ) ).
% nth_upt
thf(fact_99_lexordp__eq__simps_I4_J,axiom,
! [A: $tType] :
( ( ord @ A @ ( type2 @ A ) )
=> ! [X: A,Xs: list @ A,Y: A,Ys: list @ A] :
( ( ord_lexordp_eq @ A @ ( cons @ A @ X @ Xs ) @ ( cons @ A @ Y @ Ys ) )
= ( ( ord_less @ A @ X @ Y )
| ( ~ ( ord_less @ A @ Y @ X )
& ( ord_lexordp_eq @ A @ Xs @ Ys ) ) ) ) ) ).
% lexordp_eq_simps(4)
thf(fact_100_is__num__normalize_I1_J,axiom,
! [A: $tType] :
( ( neg_numeral @ A @ ( type2 @ A ) )
=> ! [A2: A,B: A,C: A] :
( ( plus_plus @ A @ ( plus_plus @ A @ A2 @ B ) @ C )
= ( plus_plus @ A @ A2 @ ( plus_plus @ A @ B @ C ) ) ) ) ).
% is_num_normalize(1)
thf(fact_101_member__rec_I1_J,axiom,
! [A: $tType,X: A,Xs: list @ A,Y: A] :
( ( member @ A @ ( cons @ A @ X @ Xs ) @ Y )
= ( ( X = Y )
| ( member @ A @ Xs @ Y ) ) ) ).
% member_rec(1)
thf(fact_102_ex__gt__or__lt,axiom,
! [A: $tType] :
( ( condit1656338222tinuum @ A @ ( type2 @ A ) )
=> ! [A2: A] :
? [B4: A] :
( ( ord_less @ A @ A2 @ B4 )
| ( ord_less @ A @ B4 @ A2 ) ) ) ).
% ex_gt_or_lt
thf(fact_103_linorder__neqE__linordered__idom,axiom,
! [A: $tType] :
( ( linordered_idom @ A @ ( type2 @ A ) )
=> ! [X: A,Y: A] :
( ( X != Y )
=> ( ~ ( ord_less @ A @ X @ Y )
=> ( ord_less @ A @ Y @ X ) ) ) ) ).
% linorder_neqE_linordered_idom
thf(fact_104_lexordp__eq__simps_I1_J,axiom,
! [A: $tType] :
( ( ord @ A @ ( type2 @ A ) )
=> ! [Ys: list @ A] : ( ord_lexordp_eq @ A @ ( nil @ A ) @ Ys ) ) ).
% lexordp_eq_simps(1)
thf(fact_105_lexordp__eq__simps_I2_J,axiom,
! [A: $tType] :
( ( ord @ A @ ( type2 @ A ) )
=> ! [Xs: list @ A] :
( ( ord_lexordp_eq @ A @ Xs @ ( nil @ A ) )
= ( Xs
= ( nil @ A ) ) ) ) ).
% lexordp_eq_simps(2)
thf(fact_106_nth__Cons__Suc,axiom,
! [A: $tType,X: A,Xs: list @ A,N: nat] :
( ( nth @ A @ ( cons @ A @ X @ Xs ) @ ( suc @ N ) )
= ( nth @ A @ Xs @ N ) ) ).
% nth_Cons_Suc
thf(fact_107_lexordp__eq__simps_I3_J,axiom,
! [A: $tType] :
( ( ord @ A @ ( type2 @ A ) )
=> ! [X: A,Xs: list @ A] :
~ ( ord_lexordp_eq @ A @ ( cons @ A @ X @ Xs ) @ ( nil @ A ) ) ) ).
% lexordp_eq_simps(3)
thf(fact_108_less__numeral__extra_I4_J,axiom,
! [A: $tType] :
( ( linordered_semidom @ A @ ( type2 @ A ) )
=> ~ ( ord_less @ A @ ( one_one @ A ) @ ( one_one @ A ) ) ) ).
% less_numeral_extra(4)
thf(fact_109_transpose_Ocases,axiom,
! [A: $tType,X: list @ ( list @ A )] :
( ( X
!= ( nil @ ( list @ A ) ) )
=> ( ! [Xss: list @ ( list @ A )] :
( X
!= ( cons @ ( list @ A ) @ ( nil @ A ) @ Xss ) )
=> ~ ! [X3: A,Xs3: list @ A,Xss: list @ ( list @ A )] :
( X
!= ( cons @ ( list @ A ) @ ( cons @ A @ X3 @ Xs3 ) @ Xss ) ) ) ) ).
% transpose.cases
thf(fact_110_lexordp__eq__antisym,axiom,
! [A: $tType] :
( ( linorder @ A @ ( type2 @ A ) )
=> ! [Xs: list @ A,Ys: list @ A] :
( ( ord_lexordp_eq @ A @ Xs @ Ys )
=> ( ( ord_lexordp_eq @ A @ Ys @ Xs )
=> ( Xs = Ys ) ) ) ) ).
% lexordp_eq_antisym
thf(fact_111_lexordp__eq__linear,axiom,
! [A: $tType] :
( ( linorder @ A @ ( type2 @ A ) )
=> ! [Xs: list @ A,Ys: list @ A] :
( ( ord_lexordp_eq @ A @ Xs @ Ys )
| ( ord_lexordp_eq @ A @ Ys @ Xs ) ) ) ).
% lexordp_eq_linear
thf(fact_112_lexordp__eq__trans,axiom,
! [A: $tType] :
( ( linorder @ A @ ( type2 @ A ) )
=> ! [Xs: list @ A,Ys: list @ A,Zs: list @ A] :
( ( ord_lexordp_eq @ A @ Xs @ Ys )
=> ( ( ord_lexordp_eq @ A @ Ys @ Zs )
=> ( ord_lexordp_eq @ A @ Xs @ Zs ) ) ) ) ).
% lexordp_eq_trans
thf(fact_113_lexordp__eq__refl,axiom,
! [A: $tType] :
( ( ord @ A @ ( type2 @ A ) )
=> ! [Xs: list @ A] : ( ord_lexordp_eq @ A @ Xs @ Xs ) ) ).
% lexordp_eq_refl
thf(fact_114_lexordp__eq_ONil,axiom,
! [A: $tType] :
( ( ord @ A @ ( type2 @ A ) )
=> ! [Ys: list @ A] : ( ord_lexordp_eq @ A @ ( nil @ A ) @ Ys ) ) ).
% lexordp_eq.Nil
thf(fact_115_one__reorient,axiom,
! [A: $tType] :
( ( one @ A @ ( type2 @ A ) )
=> ! [X: A] :
( ( ( one_one @ A )
= X )
= ( X
= ( one_one @ A ) ) ) ) ).
% one_reorient
thf(fact_116_member__rec_I2_J,axiom,
! [A: $tType,Y: A] :
~ ( member @ A @ ( nil @ A ) @ Y ) ).
% member_rec(2)
thf(fact_117_lexordp__eq_Oinducts,axiom,
! [A: $tType] :
( ( ord @ A @ ( type2 @ A ) )
=> ! [X12: list @ A,X2: list @ A,P: ( list @ A ) > ( list @ A ) > $o] :
( ( ord_lexordp_eq @ A @ X12 @ X2 )
=> ( ! [X1: list @ A] : ( P @ ( nil @ A ) @ X1 )
=> ( ! [X3: A,Y4: A,Xs3: list @ A,Ys2: list @ A] :
( ( ord_less @ A @ X3 @ Y4 )
=> ( P @ ( cons @ A @ X3 @ Xs3 ) @ ( cons @ A @ Y4 @ Ys2 ) ) )
=> ( ! [X3: A,Y4: A,Xs3: list @ A,Ys2: list @ A] :
( ~ ( ord_less @ A @ X3 @ Y4 )
=> ( ~ ( ord_less @ A @ Y4 @ X3 )
=> ( ( ord_lexordp_eq @ A @ Xs3 @ Ys2 )
=> ( ( P @ Xs3 @ Ys2 )
=> ( P @ ( cons @ A @ X3 @ Xs3 ) @ ( cons @ A @ Y4 @ Ys2 ) ) ) ) ) )
=> ( P @ X12 @ X2 ) ) ) ) ) ) ).
% lexordp_eq.inducts
thf(fact_118_lexordp__eq_Osimps,axiom,
! [A: $tType] :
( ( ord @ A @ ( type2 @ A ) )
=> ( ( ord_lexordp_eq @ A )
= ( ^ [A1: list @ A,A22: list @ A] :
( ? [Ys3: list @ A] :
( ( A1
= ( nil @ A ) )
& ( A22 = Ys3 ) )
| ? [X5: A,Y5: A,Xs4: list @ A,Ys3: list @ A] :
( ( A1
= ( cons @ A @ X5 @ Xs4 ) )
& ( A22
= ( cons @ A @ Y5 @ Ys3 ) )
& ( ord_less @ A @ X5 @ Y5 ) )
| ? [X5: A,Y5: A,Xs4: list @ A,Ys3: list @ A] :
( ( A1
= ( cons @ A @ X5 @ Xs4 ) )
& ( A22
= ( cons @ A @ Y5 @ Ys3 ) )
& ~ ( ord_less @ A @ X5 @ Y5 )
& ~ ( ord_less @ A @ Y5 @ X5 )
& ( ord_lexordp_eq @ A @ Xs4 @ Ys3 ) ) ) ) ) ) ).
% lexordp_eq.simps
thf(fact_119_lexordp__eq_Ocases,axiom,
! [A: $tType] :
( ( ord @ A @ ( type2 @ A ) )
=> ! [A12: list @ A,A23: list @ A] :
( ( ord_lexordp_eq @ A @ A12 @ A23 )
=> ( ( ( A12
= ( nil @ A ) )
=> ! [Ys2: list @ A] : ( A23 != Ys2 ) )
=> ( ! [X3: A] :
( ? [Xs3: list @ A] :
( A12
= ( cons @ A @ X3 @ Xs3 ) )
=> ! [Y4: A] :
( ? [Ys2: list @ A] :
( A23
= ( cons @ A @ Y4 @ Ys2 ) )
=> ~ ( ord_less @ A @ X3 @ Y4 ) ) )
=> ~ ! [X3: A,Y4: A,Xs3: list @ A] :
( ( A12
= ( cons @ A @ X3 @ Xs3 ) )
=> ! [Ys2: list @ A] :
( ( A23
= ( cons @ A @ Y4 @ Ys2 ) )
=> ( ~ ( ord_less @ A @ X3 @ Y4 )
=> ( ~ ( ord_less @ A @ Y4 @ X3 )
=> ~ ( ord_lexordp_eq @ A @ Xs3 @ Ys2 ) ) ) ) ) ) ) ) ) ).
% lexordp_eq.cases
thf(fact_120_map__tailrec__rev_Oinduct,axiom,
! [A: $tType,B3: $tType,P: ( A > B3 ) > ( list @ A ) > ( list @ B3 ) > $o,A0: A > B3,A12: list @ A,A23: list @ B3] :
( ! [F2: A > B3,X1: list @ B3] : ( P @ F2 @ ( nil @ A ) @ X1 )
=> ( ! [F2: A > B3,A4: A,As: list @ A,Bs: list @ B3] :
( ( P @ F2 @ As @ ( cons @ B3 @ ( F2 @ A4 ) @ Bs ) )
=> ( P @ F2 @ ( cons @ A @ A4 @ As ) @ Bs ) )
=> ( P @ A0 @ A12 @ A23 ) ) ) ).
% map_tailrec_rev.induct
thf(fact_121_list__nonempty__induct,axiom,
! [A: $tType,Xs: list @ A,P: ( list @ A ) > $o] :
( ( Xs
!= ( nil @ A ) )
=> ( ! [X3: A] : ( P @ ( cons @ A @ X3 @ ( nil @ A ) ) )
=> ( ! [X3: A,Xs3: list @ A] :
( ( Xs3
!= ( nil @ A ) )
=> ( ( P @ Xs3 )
=> ( P @ ( cons @ A @ X3 @ Xs3 ) ) ) )
=> ( P @ Xs ) ) ) ) ).
% list_nonempty_induct
thf(fact_122_remdups__adj_Oinduct,axiom,
! [A: $tType,P: ( list @ A ) > $o,A0: list @ A] :
( ( P @ ( nil @ A ) )
=> ( ! [X3: A] : ( P @ ( cons @ A @ X3 @ ( nil @ A ) ) )
=> ( ! [X3: A,Y4: A,Xs3: list @ A] :
( ( ( X3 = Y4 )
=> ( P @ ( cons @ A @ X3 @ Xs3 ) ) )
=> ( ( ( X3 != Y4 )
=> ( P @ ( cons @ A @ Y4 @ Xs3 ) ) )
=> ( P @ ( cons @ A @ X3 @ ( cons @ A @ Y4 @ Xs3 ) ) ) ) )
=> ( P @ A0 ) ) ) ) ).
% remdups_adj.induct
thf(fact_123_remdups__adj_Ocases,axiom,
! [A: $tType,X: list @ A] :
( ( X
!= ( nil @ A ) )
=> ( ! [X3: A] :
( X
!= ( cons @ A @ X3 @ ( nil @ A ) ) )
=> ~ ! [X3: A,Y4: A,Xs3: list @ A] :
( X
!= ( cons @ A @ X3 @ ( cons @ A @ Y4 @ Xs3 ) ) ) ) ) ).
% remdups_adj.cases
thf(fact_124_splice_Oinduct,axiom,
! [A: $tType,P: ( list @ A ) > ( list @ A ) > $o,A0: list @ A,A12: list @ A] :
( ! [X1: list @ A] : ( P @ ( nil @ A ) @ X1 )
=> ( ! [V2: A,Va: list @ A] : ( P @ ( cons @ A @ V2 @ Va ) @ ( nil @ A ) )
=> ( ! [X3: A,Xs3: list @ A,Y4: A,Ys2: list @ A] :
( ( P @ Xs3 @ Ys2 )
=> ( P @ ( cons @ A @ X3 @ Xs3 ) @ ( cons @ A @ Y4 @ Ys2 ) ) )
=> ( P @ A0 @ A12 ) ) ) ) ).
% splice.induct
thf(fact_125_list__induct2_H,axiom,
! [A: $tType,B3: $tType,P: ( list @ A ) > ( list @ B3 ) > $o,Xs: list @ A,Ys: list @ B3] :
( ( P @ ( nil @ A ) @ ( nil @ B3 ) )
=> ( ! [X3: A,Xs3: list @ A] : ( P @ ( cons @ A @ X3 @ Xs3 ) @ ( nil @ B3 ) )
=> ( ! [Y4: B3,Ys2: list @ B3] : ( P @ ( nil @ A ) @ ( cons @ B3 @ Y4 @ Ys2 ) )
=> ( ! [X3: A,Xs3: list @ A,Y4: B3,Ys2: list @ B3] :
( ( P @ Xs3 @ Ys2 )
=> ( P @ ( cons @ A @ X3 @ Xs3 ) @ ( cons @ B3 @ Y4 @ Ys2 ) ) )
=> ( P @ Xs @ Ys ) ) ) ) ) ).
% list_induct2'
thf(fact_126_neq__Nil__conv,axiom,
! [A: $tType,Xs: list @ A] :
( ( Xs
!= ( nil @ A ) )
= ( ? [Y5: A,Ys3: list @ A] :
( Xs
= ( cons @ A @ Y5 @ Ys3 ) ) ) ) ).
% neq_Nil_conv
thf(fact_127_list_Oinducts,axiom,
! [A: $tType,P: ( list @ A ) > $o,List: list @ A] :
( ( P @ ( nil @ A ) )
=> ( ! [X1: A,X23: list @ A] :
( ( P @ X23 )
=> ( P @ ( cons @ A @ X1 @ X23 ) ) )
=> ( P @ List ) ) ) ).
% list.inducts
thf(fact_128_list_Oexhaust,axiom,
! [A: $tType,Y: list @ A] :
( ( Y
!= ( nil @ A ) )
=> ~ ! [X212: A,X222: list @ A] :
( Y
!= ( cons @ A @ X212 @ X222 ) ) ) ).
% list.exhaust
thf(fact_129_list_OdiscI,axiom,
! [A: $tType,List: list @ A,X21: A,X22: list @ A] :
( ( List
= ( cons @ A @ X21 @ X22 ) )
=> ( List
!= ( nil @ A ) ) ) ).
% list.discI
thf(fact_130_list_Odistinct_I1_J,axiom,
! [A: $tType,X21: A,X22: list @ A] :
( ( nil @ A )
!= ( cons @ A @ X21 @ X22 ) ) ).
% list.distinct(1)
thf(fact_131_less__add__one,axiom,
! [A: $tType] :
( ( linordered_semidom @ A @ ( type2 @ A ) )
=> ! [A2: A] : ( ord_less @ A @ A2 @ ( plus_plus @ A @ A2 @ ( one_one @ A ) ) ) ) ).
% less_add_one
thf(fact_132_gen__length__code_I1_J,axiom,
! [A: $tType,N: nat] :
( ( gen_length @ A @ N @ ( nil @ A ) )
= N ) ).
% gen_length_code(1)
thf(fact_133_Suc__eq__plus1__left,axiom,
( suc
= ( plus_plus @ nat @ ( one_one @ nat ) ) ) ).
% Suc_eq_plus1_left
thf(fact_134_Suc__eq__plus1,axiom,
( suc
= ( ^ [N4: nat] : ( plus_plus @ nat @ N4 @ ( one_one @ nat ) ) ) ) ).
% Suc_eq_plus1
thf(fact_135_lexordp__eq_OCons,axiom,
! [A: $tType] :
( ( ord @ A @ ( type2 @ A ) )
=> ! [X: A,Y: A,Xs: list @ A,Ys: list @ A] :
( ( ord_less @ A @ X @ Y )
=> ( ord_lexordp_eq @ A @ ( cons @ A @ X @ Xs ) @ ( cons @ A @ Y @ Ys ) ) ) ) ).
% lexordp_eq.Cons
thf(fact_136_lexordp__eq_OCons__eq,axiom,
! [A: $tType] :
( ( ord @ A @ ( type2 @ A ) )
=> ! [X: A,Y: A,Xs: list @ A,Ys: list @ A] :
( ~ ( ord_less @ A @ X @ Y )
=> ( ~ ( ord_less @ A @ Y @ X )
=> ( ( ord_lexordp_eq @ A @ Xs @ Ys )
=> ( ord_lexordp_eq @ A @ ( cons @ A @ X @ Xs ) @ ( cons @ A @ Y @ Ys ) ) ) ) ) ) ).
% lexordp_eq.Cons_eq
thf(fact_137_fold__atLeastAtMost__nat_Oinduct,axiom,
! [A: $tType,P: ( nat > A > A ) > nat > nat > A > $o,A0: nat > A > A,A12: nat,A23: nat,A32: A] :
( ! [F2: nat > A > A,A4: nat,B4: nat,Acc: A] :
( ( ~ ( ord_less @ nat @ B4 @ A4 )
=> ( P @ F2 @ ( plus_plus @ nat @ A4 @ ( one_one @ nat ) ) @ B4 @ ( F2 @ A4 @ Acc ) ) )
=> ( P @ F2 @ A4 @ B4 @ Acc ) )
=> ( P @ A0 @ A12 @ A23 @ A32 ) ) ).
% fold_atLeastAtMost_nat.induct
thf(fact_138_list__encode_Oinduct,axiom,
! [P: ( list @ nat ) > $o,A0: list @ nat] :
( ( P @ ( nil @ nat ) )
=> ( ! [X3: nat,Xs3: list @ nat] :
( ( P @ Xs3 )
=> ( P @ ( cons @ nat @ X3 @ Xs3 ) ) )
=> ( P @ A0 ) ) ) ).
% list_encode.induct
thf(fact_139_list__encode_Ocases,axiom,
! [X: list @ nat] :
( ( X
!= ( nil @ nat ) )
=> ~ ! [X3: nat,Xs3: list @ nat] :
( X
!= ( cons @ nat @ X3 @ Xs3 ) ) ) ).
% list_encode.cases
thf(fact_140_gen__llength__code_I2_J,axiom,
! [B3: $tType,N: nat,X: B3,Xs: coindu1593790203_llist @ B3] :
( ( coindu493225792length @ B3 @ N @ ( coindu1121789889_LCons @ B3 @ X @ Xs ) )
= ( coindu493225792length @ B3 @ ( plus_plus @ nat @ N @ ( one_one @ nat ) ) @ Xs ) ) ).
% gen_llength_code(2)
thf(fact_141_upt__rec__numeral,axiom,
! [M: num,N: num] :
( ( ( ord_less @ nat @ ( numeral_numeral @ nat @ M ) @ ( numeral_numeral @ nat @ N ) )
=> ( ( upt @ ( numeral_numeral @ nat @ M ) @ ( numeral_numeral @ nat @ N ) )
= ( cons @ nat @ ( numeral_numeral @ nat @ M ) @ ( upt @ ( suc @ ( numeral_numeral @ nat @ M ) ) @ ( numeral_numeral @ nat @ N ) ) ) ) )
& ( ~ ( ord_less @ nat @ ( numeral_numeral @ nat @ M ) @ ( numeral_numeral @ nat @ N ) )
=> ( ( upt @ ( numeral_numeral @ nat @ M ) @ ( numeral_numeral @ nat @ N ) )
= ( nil @ nat ) ) ) ) ).
% upt_rec_numeral
thf(fact_142_numeral__eq__iff,axiom,
! [A: $tType] :
( ( semiring_char_0 @ A @ ( type2 @ A ) )
=> ! [M: num,N: num] :
( ( ( numeral_numeral @ A @ M )
= ( numeral_numeral @ A @ N ) )
= ( M = N ) ) ) ).
% numeral_eq_iff
thf(fact_143_numeral__less__iff,axiom,
! [A: $tType] :
( ( linordered_semidom @ A @ ( type2 @ A ) )
=> ! [M: num,N: num] :
( ( ord_less @ A @ ( numeral_numeral @ A @ M ) @ ( numeral_numeral @ A @ N ) )
= ( ord_less @ num @ M @ N ) ) ) ).
% numeral_less_iff
thf(fact_144_add__numeral__left,axiom,
! [A: $tType] :
( ( numeral @ A @ ( type2 @ A ) )
=> ! [V3: num,W: num,Z: A] :
( ( plus_plus @ A @ ( numeral_numeral @ A @ V3 ) @ ( plus_plus @ A @ ( numeral_numeral @ A @ W ) @ Z ) )
= ( plus_plus @ A @ ( numeral_numeral @ A @ ( plus_plus @ num @ V3 @ W ) ) @ Z ) ) ) ).
% add_numeral_left
thf(fact_145_numeral__plus__numeral,axiom,
! [A: $tType] :
( ( numeral @ A @ ( type2 @ A ) )
=> ! [M: num,N: num] :
( ( plus_plus @ A @ ( numeral_numeral @ A @ M ) @ ( numeral_numeral @ A @ N ) )
= ( numeral_numeral @ A @ ( plus_plus @ num @ M @ N ) ) ) ) ).
% numeral_plus_numeral
thf(fact_146_not__numeral__less__one,axiom,
! [A: $tType] :
( ( linordered_semidom @ A @ ( type2 @ A ) )
=> ! [N: num] :
~ ( ord_less @ A @ ( numeral_numeral @ A @ N ) @ ( one_one @ A ) ) ) ).
% not_numeral_less_one
thf(fact_147_one__plus__numeral__commute,axiom,
! [A: $tType] :
( ( numeral @ A @ ( type2 @ A ) )
=> ! [X: num] :
( ( plus_plus @ A @ ( one_one @ A ) @ ( numeral_numeral @ A @ X ) )
= ( plus_plus @ A @ ( numeral_numeral @ A @ X ) @ ( one_one @ A ) ) ) ) ).
% one_plus_numeral_commute
thf(fact_148_sublists_Osimps_I1_J,axiom,
! [A: $tType] :
( ( sublists @ A @ ( nil @ A ) )
= ( cons @ ( list @ A ) @ ( nil @ A ) @ ( nil @ ( list @ A ) ) ) ) ).
% sublists.simps(1)
thf(fact_149_triangle__Suc,axiom,
! [N: nat] :
( ( nat_triangle @ ( suc @ N ) )
= ( plus_plus @ nat @ ( nat_triangle @ N ) @ ( suc @ N ) ) ) ).
% triangle_Suc
thf(fact_150_longest__common__prefix_Oinduct,axiom,
! [A: $tType,P: ( list @ A ) > ( list @ A ) > $o,A0: list @ A,A12: list @ A] :
( ! [X3: A,Xs3: list @ A,Y4: A,Ys2: list @ A] :
( ( ( X3 = Y4 )
=> ( P @ Xs3 @ Ys2 ) )
=> ( P @ ( cons @ A @ X3 @ Xs3 ) @ ( cons @ A @ Y4 @ Ys2 ) ) )
=> ( ! [X1: list @ A] : ( P @ ( nil @ A ) @ X1 )
=> ( ! [Uu: list @ A] : ( P @ Uu @ ( nil @ A ) )
=> ( P @ A0 @ A12 ) ) ) ) ).
% longest_common_prefix.induct
thf(fact_151_prefixes_Ocases,axiom,
! [A: $tType,X: list @ A] :
( ( X
!= ( nil @ A ) )
=> ~ ! [X3: A,Xs3: list @ A] :
( X
!= ( cons @ A @ X3 @ Xs3 ) ) ) ).
% prefixes.cases
thf(fact_152_prefixes_Oinduct,axiom,
! [A: $tType,P: ( list @ A ) > $o,A0: list @ A] :
( ( P @ ( nil @ A ) )
=> ( ! [X3: A,Xs3: list @ A] :
( ( P @ Xs3 )
=> ( P @ ( cons @ A @ X3 @ Xs3 ) ) )
=> ( P @ A0 ) ) ) ).
% prefixes.induct
thf(fact_153_enat__ord__number_I2_J,axiom,
! [M: num,N: num] :
( ( ord_less @ extended_enat @ ( numeral_numeral @ extended_enat @ M ) @ ( numeral_numeral @ extended_enat @ N ) )
= ( ord_less @ nat @ ( numeral_numeral @ nat @ M ) @ ( numeral_numeral @ nat @ N ) ) ) ).
% enat_ord_number(2)
thf(fact_154_product__lists_Osimps_I1_J,axiom,
! [A: $tType] :
( ( product_lists @ A @ ( nil @ ( list @ A ) ) )
= ( cons @ ( list @ A ) @ ( nil @ A ) @ ( nil @ ( list @ A ) ) ) ) ).
% product_lists.simps(1)
thf(fact_155__092_060open_062LNil_A_061_Allist__of_A_091_093_092_060close_062,axiom,
! [A: $tType] :
( ( coindu1598213697e_LNil @ A )
= ( coindu1079202755ist_of @ A @ ( nil @ A ) ) ) ).
% \<open>LNil = llist_of []\<close>
thf(fact_156_enat__less__induct,axiom,
! [P: extended_enat > $o,N: extended_enat] :
( ! [N2: extended_enat] :
( ! [M2: extended_enat] :
( ( ord_less @ extended_enat @ M2 @ N2 )
=> ( P @ M2 ) )
=> ( P @ N2 ) )
=> ( P @ N ) ) ).
% enat_less_induct
thf(fact_157_llist_Odistinct_I1_J,axiom,
! [A: $tType,X21: A,X22: coindu1593790203_llist @ A] :
( ( coindu1598213697e_LNil @ A )
!= ( coindu1121789889_LCons @ A @ X21 @ X22 ) ) ).
% llist.distinct(1)
thf(fact_158_llist_Oexhaust,axiom,
! [A: $tType,Y: coindu1593790203_llist @ A] :
( ( Y
!= ( coindu1598213697e_LNil @ A ) )
=> ~ ! [X212: A,X222: coindu1593790203_llist @ A] :
( Y
!= ( coindu1121789889_LCons @ A @ X212 @ X222 ) ) ) ).
% llist.exhaust
thf(fact_159_neq__LNil__conv,axiom,
! [A: $tType,Xs: coindu1593790203_llist @ A] :
( ( Xs
!= ( coindu1598213697e_LNil @ A ) )
= ( ? [X5: A,Xs2: coindu1593790203_llist @ A] :
( Xs
= ( coindu1121789889_LCons @ A @ X5 @ Xs2 ) ) ) ) ).
% neq_LNil_conv
thf(fact_160_lmember__code_I1_J,axiom,
! [A: $tType,X: A] :
~ ( coindu567634248member @ A @ X @ ( coindu1598213697e_LNil @ A ) ) ).
% lmember_code(1)
thf(fact_161_llist__of__eq__LNil__conv,axiom,
! [A: $tType,Xs: list @ A] :
( ( ( coindu1079202755ist_of @ A @ Xs )
= ( coindu1598213697e_LNil @ A ) )
= ( Xs
= ( nil @ A ) ) ) ).
% llist_of_eq_LNil_conv
thf(fact_162_count__list_Osimps_I2_J,axiom,
! [A: $tType,X: A,Y: A,Xs: list @ A] :
( ( ( X = Y )
=> ( ( count_list @ A @ ( cons @ A @ X @ Xs ) @ Y )
= ( plus_plus @ nat @ ( count_list @ A @ Xs @ Y ) @ ( one_one @ nat ) ) ) )
& ( ( X != Y )
=> ( ( count_list @ A @ ( cons @ A @ X @ Xs ) @ Y )
= ( count_list @ A @ Xs @ Y ) ) ) ) ).
% count_list.simps(2)
thf(fact_163_one__less__numeral__iff,axiom,
! [A: $tType] :
( ( linordered_semidom @ A @ ( type2 @ A ) )
=> ! [N: num] :
( ( ord_less @ A @ ( one_one @ A ) @ ( numeral_numeral @ A @ N ) )
= ( ord_less @ num @ one2 @ N ) ) ) ).
% one_less_numeral_iff
thf(fact_164_one__plus__numeral,axiom,
! [A: $tType] :
( ( numeral @ A @ ( type2 @ A ) )
=> ! [N: num] :
( ( plus_plus @ A @ ( one_one @ A ) @ ( numeral_numeral @ A @ N ) )
= ( numeral_numeral @ A @ ( plus_plus @ num @ one2 @ N ) ) ) ) ).
% one_plus_numeral
thf(fact_165_one__eq__numeral__iff,axiom,
! [A: $tType] :
( ( semiring_char_0 @ A @ ( type2 @ A ) )
=> ! [N: num] :
( ( ( one_one @ A )
= ( numeral_numeral @ A @ N ) )
= ( one2 = N ) ) ) ).
% one_eq_numeral_iff
thf(fact_166_numeral__eq__one__iff,axiom,
! [A: $tType] :
( ( semiring_char_0 @ A @ ( type2 @ A ) )
=> ! [N: num] :
( ( ( numeral_numeral @ A @ N )
= ( one_one @ A ) )
= ( N = one2 ) ) ) ).
% numeral_eq_one_iff
thf(fact_167_Suc__numeral,axiom,
! [N: num] :
( ( suc @ ( numeral_numeral @ nat @ N ) )
= ( numeral_numeral @ nat @ ( plus_plus @ num @ N @ one2 ) ) ) ).
% Suc_numeral
thf(fact_168_numeral__plus__one,axiom,
! [A: $tType] :
( ( numeral @ A @ ( type2 @ A ) )
=> ! [N: num] :
( ( plus_plus @ A @ ( numeral_numeral @ A @ N ) @ ( one_one @ A ) )
= ( numeral_numeral @ A @ ( plus_plus @ num @ N @ one2 ) ) ) ) ).
% numeral_plus_one
thf(fact_169_add__One__commute,axiom,
! [N: num] :
( ( plus_plus @ num @ one2 @ N )
= ( plus_plus @ num @ N @ one2 ) ) ).
% add_One_commute
thf(fact_170_numeral__One,axiom,
! [A: $tType] :
( ( numeral @ A @ ( type2 @ A ) )
=> ( ( numeral_numeral @ A @ one2 )
= ( one_one @ A ) ) ) ).
% numeral_One
thf(fact_171_numerals_I1_J,axiom,
( ( numeral_numeral @ nat @ one2 )
= ( one_one @ nat ) ) ).
% numerals(1)
thf(fact_172_Suc__nat__number__of__add,axiom,
! [V3: num,N: nat] :
( ( suc @ ( plus_plus @ nat @ ( numeral_numeral @ nat @ V3 ) @ N ) )
= ( plus_plus @ nat @ ( numeral_numeral @ nat @ ( plus_plus @ num @ V3 @ one2 ) ) @ N ) ) ).
% Suc_nat_number_of_add
thf(fact_173_semiring__norm_I75_J,axiom,
! [M: num] :
~ ( ord_less @ num @ M @ one2 ) ).
% semiring_norm(75)
thf(fact_174_prefixes_Osimps_I1_J,axiom,
! [A: $tType] :
( ( prefixes @ A @ ( nil @ A ) )
= ( cons @ ( list @ A ) @ ( nil @ A ) @ ( nil @ ( list @ A ) ) ) ) ).
% prefixes.simps(1)
thf(fact_175_Suc__1,axiom,
( ( suc @ ( one_one @ nat ) )
= ( numeral_numeral @ nat @ ( bit0 @ one2 ) ) ) ).
% Suc_1
thf(fact_176_num_Oinject_I1_J,axiom,
! [X2: num,Y2: num] :
( ( ( bit0 @ X2 )
= ( bit0 @ Y2 ) )
= ( X2 = Y2 ) ) ).
% num.inject(1)
thf(fact_177_semiring__norm_I6_J,axiom,
! [M: num,N: num] :
( ( plus_plus @ num @ ( bit0 @ M ) @ ( bit0 @ N ) )
= ( bit0 @ ( plus_plus @ num @ M @ N ) ) ) ).
% semiring_norm(6)
thf(fact_178_semiring__norm_I78_J,axiom,
! [M: num,N: num] :
( ( ord_less @ num @ ( bit0 @ M ) @ ( bit0 @ N ) )
= ( ord_less @ num @ M @ N ) ) ).
% semiring_norm(78)
thf(fact_179_semiring__norm_I2_J,axiom,
( ( plus_plus @ num @ one2 @ one2 )
= ( bit0 @ one2 ) ) ).
% semiring_norm(2)
thf(fact_180_semiring__norm_I76_J,axiom,
! [N: num] : ( ord_less @ num @ one2 @ ( bit0 @ N ) ) ).
% semiring_norm(76)
thf(fact_181_one__add__one,axiom,
! [A: $tType] :
( ( numeral @ A @ ( type2 @ A ) )
=> ( ( plus_plus @ A @ ( one_one @ A ) @ ( one_one @ A ) )
= ( numeral_numeral @ A @ ( bit0 @ one2 ) ) ) ) ).
% one_add_one
thf(fact_182_add__2__eq__Suc,axiom,
! [N: nat] :
( ( plus_plus @ nat @ ( numeral_numeral @ nat @ ( bit0 @ one2 ) ) @ N )
= ( suc @ ( suc @ N ) ) ) ).
% add_2_eq_Suc
thf(fact_183_add__2__eq__Suc_H,axiom,
! [N: nat] :
( ( plus_plus @ nat @ N @ ( numeral_numeral @ nat @ ( bit0 @ one2 ) ) )
= ( suc @ ( suc @ N ) ) ) ).
% add_2_eq_Suc'
thf(fact_184_num_Odistinct_I1_J,axiom,
! [X2: num] :
( one2
!= ( bit0 @ X2 ) ) ).
% num.distinct(1)
thf(fact_185_numeral__Bit0,axiom,
! [A: $tType] :
( ( numeral @ A @ ( type2 @ A ) )
=> ! [N: num] :
( ( numeral_numeral @ A @ ( bit0 @ N ) )
= ( plus_plus @ A @ ( numeral_numeral @ A @ N ) @ ( numeral_numeral @ A @ N ) ) ) ) ).
% numeral_Bit0
thf(fact_186_nat__1__add__1,axiom,
( ( plus_plus @ nat @ ( one_one @ nat ) @ ( one_one @ nat ) )
= ( numeral_numeral @ nat @ ( bit0 @ one2 ) ) ) ).
% nat_1_add_1
thf(fact_187_dbl__simps_I3_J,axiom,
! [A: $tType] :
( ( neg_numeral @ A @ ( type2 @ A ) )
=> ( ( neg_numeral_dbl @ A @ ( one_one @ A ) )
= ( numeral_numeral @ A @ ( bit0 @ one2 ) ) ) ) ).
% dbl_simps(3)
thf(fact_188_add__neg__numeral__special_I9_J,axiom,
! [A: $tType] :
( ( neg_numeral @ A @ ( type2 @ A ) )
=> ( ( plus_plus @ A @ ( uminus_uminus @ A @ ( one_one @ A ) ) @ ( uminus_uminus @ A @ ( one_one @ A ) ) )
= ( uminus_uminus @ A @ ( numeral_numeral @ A @ ( bit0 @ one2 ) ) ) ) ) ).
% add_neg_numeral_special(9)
thf(fact_189_dbl__simps_I5_J,axiom,
! [A: $tType] :
( ( neg_numeral @ A @ ( type2 @ A ) )
=> ! [K: num] :
( ( neg_numeral_dbl @ A @ ( numeral_numeral @ A @ K ) )
= ( numeral_numeral @ A @ ( bit0 @ K ) ) ) ) ).
% dbl_simps(5)
thf(fact_190_neg__equal__iff__equal,axiom,
! [A: $tType] :
( ( group_add @ A @ ( type2 @ A ) )
=> ! [A2: A,B: A] :
( ( ( uminus_uminus @ A @ A2 )
= ( uminus_uminus @ A @ B ) )
= ( A2 = B ) ) ) ).
% neg_equal_iff_equal
thf(fact_191_add_Oinverse__inverse,axiom,
! [A: $tType] :
( ( group_add @ A @ ( type2 @ A ) )
=> ! [A2: A] :
( ( uminus_uminus @ A @ ( uminus_uminus @ A @ A2 ) )
= A2 ) ) ).
% add.inverse_inverse
thf(fact_192_neg__less__iff__less,axiom,
! [A: $tType] :
( ( ordered_ab_group_add @ A @ ( type2 @ A ) )
=> ! [B: A,A2: A] :
( ( ord_less @ A @ ( uminus_uminus @ A @ B ) @ ( uminus_uminus @ A @ A2 ) )
= ( ord_less @ A @ A2 @ B ) ) ) ).
% neg_less_iff_less
thf(fact_193_neg__numeral__eq__iff,axiom,
! [A: $tType] :
( ( ring_char_0 @ A @ ( type2 @ A ) )
=> ! [M: num,N: num] :
( ( ( uminus_uminus @ A @ ( numeral_numeral @ A @ M ) )
= ( uminus_uminus @ A @ ( numeral_numeral @ A @ N ) ) )
= ( M = N ) ) ) ).
% neg_numeral_eq_iff
thf(fact_194_minus__add__distrib,axiom,
! [A: $tType] :
( ( ab_group_add @ A @ ( type2 @ A ) )
=> ! [A2: A,B: A] :
( ( uminus_uminus @ A @ ( plus_plus @ A @ A2 @ B ) )
= ( plus_plus @ A @ ( uminus_uminus @ A @ A2 ) @ ( uminus_uminus @ A @ B ) ) ) ) ).
% minus_add_distrib
thf(fact_195_minus__add__cancel,axiom,
! [A: $tType] :
( ( group_add @ A @ ( type2 @ A ) )
=> ! [A2: A,B: A] :
( ( plus_plus @ A @ ( uminus_uminus @ A @ A2 ) @ ( plus_plus @ A @ A2 @ B ) )
= B ) ) ).
% minus_add_cancel
thf(fact_196_add__minus__cancel,axiom,
! [A: $tType] :
( ( group_add @ A @ ( type2 @ A ) )
=> ! [A2: A,B: A] :
( ( plus_plus @ A @ A2 @ ( plus_plus @ A @ ( uminus_uminus @ A @ A2 ) @ B ) )
= B ) ) ).
% add_minus_cancel
thf(fact_197_add__neg__numeral__simps_I3_J,axiom,
! [A: $tType] :
( ( neg_numeral @ A @ ( type2 @ A ) )
=> ! [M: num,N: num] :
( ( plus_plus @ A @ ( uminus_uminus @ A @ ( numeral_numeral @ A @ M ) ) @ ( uminus_uminus @ A @ ( numeral_numeral @ A @ N ) ) )
= ( uminus_uminus @ A @ ( plus_plus @ A @ ( numeral_numeral @ A @ M ) @ ( numeral_numeral @ A @ N ) ) ) ) ) ).
% add_neg_numeral_simps(3)
thf(fact_198_dbl__simps_I1_J,axiom,
! [A: $tType] :
( ( neg_numeral @ A @ ( type2 @ A ) )
=> ! [K: num] :
( ( neg_numeral_dbl @ A @ ( uminus_uminus @ A @ ( numeral_numeral @ A @ K ) ) )
= ( uminus_uminus @ A @ ( neg_numeral_dbl @ A @ ( numeral_numeral @ A @ K ) ) ) ) ) ).
% dbl_simps(1)
thf(fact_199_neg__one__eq__numeral__iff,axiom,
! [A: $tType] :
( ( ring_char_0 @ A @ ( type2 @ A ) )
=> ! [N: num] :
( ( ( uminus_uminus @ A @ ( one_one @ A ) )
= ( uminus_uminus @ A @ ( numeral_numeral @ A @ N ) ) )
= ( N = one2 ) ) ) ).
% neg_one_eq_numeral_iff
thf(fact_200_numeral__eq__neg__one__iff,axiom,
! [A: $tType] :
( ( ring_char_0 @ A @ ( type2 @ A ) )
=> ! [N: num] :
( ( ( uminus_uminus @ A @ ( numeral_numeral @ A @ N ) )
= ( uminus_uminus @ A @ ( one_one @ A ) ) )
= ( N = one2 ) ) ) ).
% numeral_eq_neg_one_iff
thf(fact_201_semiring__norm_I168_J,axiom,
! [A: $tType] :
( ( neg_numeral @ A @ ( type2 @ A ) )
=> ! [V3: num,W: num,Y: A] :
( ( plus_plus @ A @ ( uminus_uminus @ A @ ( numeral_numeral @ A @ V3 ) ) @ ( plus_plus @ A @ ( uminus_uminus @ A @ ( numeral_numeral @ A @ W ) ) @ Y ) )
= ( plus_plus @ A @ ( uminus_uminus @ A @ ( numeral_numeral @ A @ ( plus_plus @ num @ V3 @ W ) ) ) @ Y ) ) ) ).
% semiring_norm(168)
thf(fact_202_neg__numeral__less__iff,axiom,
! [A: $tType] :
( ( linordered_idom @ A @ ( type2 @ A ) )
=> ! [M: num,N: num] :
( ( ord_less @ A @ ( uminus_uminus @ A @ ( numeral_numeral @ A @ M ) ) @ ( uminus_uminus @ A @ ( numeral_numeral @ A @ N ) ) )
= ( ord_less @ num @ N @ M ) ) ) ).
% neg_numeral_less_iff
thf(fact_203_neg__numeral__less__neg__one__iff,axiom,
! [A: $tType] :
( ( linordered_idom @ A @ ( type2 @ A ) )
=> ! [M: num] :
( ( ord_less @ A @ ( uminus_uminus @ A @ ( numeral_numeral @ A @ M ) ) @ ( uminus_uminus @ A @ ( one_one @ A ) ) )
= ( M != one2 ) ) ) ).
% neg_numeral_less_neg_one_iff
thf(fact_204_dbl__simps_I4_J,axiom,
! [A: $tType] :
( ( neg_numeral @ A @ ( type2 @ A ) )
=> ( ( neg_numeral_dbl @ A @ ( uminus_uminus @ A @ ( one_one @ A ) ) )
= ( uminus_uminus @ A @ ( numeral_numeral @ A @ ( bit0 @ one2 ) ) ) ) ) ).
% dbl_simps(4)
thf(fact_205_not__numeral__less__neg__numeral,axiom,
! [A: $tType] :
( ( linordered_idom @ A @ ( type2 @ A ) )
=> ! [M: num,N: num] :
~ ( ord_less @ A @ ( numeral_numeral @ A @ M ) @ ( uminus_uminus @ A @ ( numeral_numeral @ A @ N ) ) ) ) ).
% not_numeral_less_neg_numeral
thf(fact_206_neg__numeral__less__numeral,axiom,
! [A: $tType] :
( ( linordered_idom @ A @ ( type2 @ A ) )
=> ! [M: num,N: num] : ( ord_less @ A @ ( uminus_uminus @ A @ ( numeral_numeral @ A @ M ) ) @ ( numeral_numeral @ A @ N ) ) ) ).
% neg_numeral_less_numeral
thf(fact_207_less__minus__one__simps_I4_J,axiom,
! [A: $tType] :
( ( linordered_idom @ A @ ( type2 @ A ) )
=> ~ ( ord_less @ A @ ( one_one @ A ) @ ( uminus_uminus @ A @ ( one_one @ A ) ) ) ) ).
% less_minus_one_simps(4)
thf(fact_208_less__minus__one__simps_I2_J,axiom,
! [A: $tType] :
( ( linordered_idom @ A @ ( type2 @ A ) )
=> ( ord_less @ A @ ( uminus_uminus @ A @ ( one_one @ A ) ) @ ( one_one @ A ) ) ) ).
% less_minus_one_simps(2)
thf(fact_209_numeral__neq__neg__one,axiom,
! [A: $tType] :
( ( ring_char_0 @ A @ ( type2 @ A ) )
=> ! [N: num] :
( ( numeral_numeral @ A @ N )
!= ( uminus_uminus @ A @ ( one_one @ A ) ) ) ) ).
% numeral_neq_neg_one
thf(fact_210_one__neq__neg__numeral,axiom,
! [A: $tType] :
( ( ring_char_0 @ A @ ( type2 @ A ) )
=> ! [N: num] :
( ( one_one @ A )
!= ( uminus_uminus @ A @ ( numeral_numeral @ A @ N ) ) ) ) ).
% one_neq_neg_numeral
thf(fact_211_neg__numeral__neq__numeral,axiom,
! [A: $tType] :
( ( ring_char_0 @ A @ ( type2 @ A ) )
=> ! [M: num,N: num] :
( ( uminus_uminus @ A @ ( numeral_numeral @ A @ M ) )
!= ( numeral_numeral @ A @ N ) ) ) ).
% neg_numeral_neq_numeral
thf(fact_212_numeral__neq__neg__numeral,axiom,
! [A: $tType] :
( ( ring_char_0 @ A @ ( type2 @ A ) )
=> ! [M: num,N: num] :
( ( numeral_numeral @ A @ M )
!= ( uminus_uminus @ A @ ( numeral_numeral @ A @ N ) ) ) ) ).
% numeral_neq_neg_numeral
thf(fact_213_less__minus__iff,axiom,
! [A: $tType] :
( ( ordered_ab_group_add @ A @ ( type2 @ A ) )
=> ! [A2: A,B: A] :
( ( ord_less @ A @ A2 @ ( uminus_uminus @ A @ B ) )
= ( ord_less @ A @ B @ ( uminus_uminus @ A @ A2 ) ) ) ) ).
% less_minus_iff
thf(fact_214_minus__less__iff,axiom,
! [A: $tType] :
( ( ordered_ab_group_add @ A @ ( type2 @ A ) )
=> ! [A2: A,B: A] :
( ( ord_less @ A @ ( uminus_uminus @ A @ A2 ) @ B )
= ( ord_less @ A @ ( uminus_uminus @ A @ B ) @ A2 ) ) ) ).
% minus_less_iff
thf(fact_215_one__neq__neg__one,axiom,
! [A: $tType] :
( ( ring_char_0 @ A @ ( type2 @ A ) )
=> ( ( one_one @ A )
!= ( uminus_uminus @ A @ ( one_one @ A ) ) ) ) ).
% one_neq_neg_one
thf(fact_216_minus__equation__iff,axiom,
! [A: $tType] :
( ( group_add @ A @ ( type2 @ A ) )
=> ! [A2: A,B: A] :
( ( ( uminus_uminus @ A @ A2 )
= B )
= ( ( uminus_uminus @ A @ B )
= A2 ) ) ) ).
% minus_equation_iff
thf(fact_217_equation__minus__iff,axiom,
! [A: $tType] :
( ( group_add @ A @ ( type2 @ A ) )
=> ! [A2: A,B: A] :
( ( A2
= ( uminus_uminus @ A @ B ) )
= ( B
= ( uminus_uminus @ A @ A2 ) ) ) ) ).
% equation_minus_iff
thf(fact_218_is__num__normalize_I8_J,axiom,
! [A: $tType] :
( ( neg_numeral @ A @ ( type2 @ A ) )
=> ! [A2: A,B: A] :
( ( uminus_uminus @ A @ ( plus_plus @ A @ A2 @ B ) )
= ( plus_plus @ A @ ( uminus_uminus @ A @ B ) @ ( uminus_uminus @ A @ A2 ) ) ) ) ).
% is_num_normalize(8)
thf(fact_219_add_Oinverse__distrib__swap,axiom,
! [A: $tType] :
( ( group_add @ A @ ( type2 @ A ) )
=> ! [A2: A,B: A] :
( ( uminus_uminus @ A @ ( plus_plus @ A @ A2 @ B ) )
= ( plus_plus @ A @ ( uminus_uminus @ A @ B ) @ ( uminus_uminus @ A @ A2 ) ) ) ) ).
% add.inverse_distrib_swap
thf(fact_220_dbl__def,axiom,
! [A: $tType] :
( ( neg_numeral @ A @ ( type2 @ A ) )
=> ( ( neg_numeral_dbl @ A )
= ( ^ [X5: A] : ( plus_plus @ A @ X5 @ X5 ) ) ) ) ).
% dbl_def
thf(fact_221_uminus__numeral__One,axiom,
! [A: $tType] :
( ( neg_numeral @ A @ ( type2 @ A ) )
=> ( ( uminus_uminus @ A @ ( numeral_numeral @ A @ one2 ) )
= ( uminus_uminus @ A @ ( one_one @ A ) ) ) ) ).
% uminus_numeral_One
thf(fact_222_neg__numeral__less__one,axiom,
! [A: $tType] :
( ( linordered_idom @ A @ ( type2 @ A ) )
=> ! [M: num] : ( ord_less @ A @ ( uminus_uminus @ A @ ( numeral_numeral @ A @ M ) ) @ ( one_one @ A ) ) ) ).
% neg_numeral_less_one
thf(fact_223_neg__one__less__numeral,axiom,
! [A: $tType] :
( ( linordered_idom @ A @ ( type2 @ A ) )
=> ! [M: num] : ( ord_less @ A @ ( uminus_uminus @ A @ ( one_one @ A ) ) @ ( numeral_numeral @ A @ M ) ) ) ).
% neg_one_less_numeral
thf(fact_224_not__numeral__less__neg__one,axiom,
! [A: $tType] :
( ( linordered_idom @ A @ ( type2 @ A ) )
=> ! [M: num] :
~ ( ord_less @ A @ ( numeral_numeral @ A @ M ) @ ( uminus_uminus @ A @ ( one_one @ A ) ) ) ) ).
% not_numeral_less_neg_one
thf(fact_225_not__one__less__neg__numeral,axiom,
! [A: $tType] :
( ( linordered_idom @ A @ ( type2 @ A ) )
=> ! [M: num] :
~ ( ord_less @ A @ ( one_one @ A ) @ ( uminus_uminus @ A @ ( numeral_numeral @ A @ M ) ) ) ) ).
% not_one_less_neg_numeral
thf(fact_226_not__neg__one__less__neg__numeral,axiom,
! [A: $tType] :
( ( linordered_idom @ A @ ( type2 @ A ) )
=> ! [M: num] :
~ ( ord_less @ A @ ( uminus_uminus @ A @ ( one_one @ A ) ) @ ( uminus_uminus @ A @ ( numeral_numeral @ A @ M ) ) ) ) ).
% not_neg_one_less_neg_numeral
thf(fact_227_add__neg__numeral__special_I5_J,axiom,
! [A: $tType] :
( ( neg_numeral @ A @ ( type2 @ A ) )
=> ! [N: num] :
( ( plus_plus @ A @ ( uminus_uminus @ A @ ( one_one @ A ) ) @ ( uminus_uminus @ A @ ( numeral_numeral @ A @ N ) ) )
= ( uminus_uminus @ A @ ( numeral_numeral @ A @ ( inc @ N ) ) ) ) ) ).
% add_neg_numeral_special(5)
thf(fact_228_add__neg__numeral__special_I6_J,axiom,
! [A: $tType] :
( ( neg_numeral @ A @ ( type2 @ A ) )
=> ! [M: num] :
( ( plus_plus @ A @ ( uminus_uminus @ A @ ( numeral_numeral @ A @ M ) ) @ ( uminus_uminus @ A @ ( one_one @ A ) ) )
= ( uminus_uminus @ A @ ( numeral_numeral @ A @ ( inc @ M ) ) ) ) ) ).
% add_neg_numeral_special(6)
thf(fact_229_num__induct,axiom,
! [P: num > $o,X: num] :
( ( P @ one2 )
=> ( ! [X3: num] :
( ( P @ X3 )
=> ( P @ ( inc @ X3 ) ) )
=> ( P @ X ) ) ) ).
% num_induct
thf(fact_230_add__inc,axiom,
! [X: num,Y: num] :
( ( plus_plus @ num @ X @ ( inc @ Y ) )
= ( inc @ ( plus_plus @ num @ X @ Y ) ) ) ).
% add_inc
thf(fact_231_inc_Osimps_I1_J,axiom,
( ( inc @ one2 )
= ( bit0 @ one2 ) ) ).
% inc.simps(1)
thf(fact_232_add__One,axiom,
! [X: num] :
( ( plus_plus @ num @ X @ one2 )
= ( inc @ X ) ) ).
% add_One
thf(fact_233_numeral__inc,axiom,
! [A: $tType] :
( ( numeral @ A @ ( type2 @ A ) )
=> ! [X: num] :
( ( numeral_numeral @ A @ ( inc @ X ) )
= ( plus_plus @ A @ ( numeral_numeral @ A @ X ) @ ( one_one @ A ) ) ) ) ).
% numeral_inc
thf(fact_234_add__neg__numeral__special_I4_J,axiom,
! [A: $tType] :
( ( neg_numeral @ A @ ( type2 @ A ) )
=> ! [N: num] :
( ( plus_plus @ A @ ( uminus_uminus @ A @ ( one_one @ A ) ) @ ( numeral_numeral @ A @ N ) )
= ( neg_numeral_sub @ A @ N @ one2 ) ) ) ).
% add_neg_numeral_special(4)
thf(fact_235_add__neg__numeral__special_I3_J,axiom,
! [A: $tType] :
( ( neg_numeral @ A @ ( type2 @ A ) )
=> ! [M: num] :
( ( plus_plus @ A @ ( numeral_numeral @ A @ M ) @ ( uminus_uminus @ A @ ( one_one @ A ) ) )
= ( neg_numeral_sub @ A @ M @ one2 ) ) ) ).
% add_neg_numeral_special(3)
thf(fact_236_sub__num__simps_I6_J,axiom,
! [A: $tType] :
( ( neg_numeral @ A @ ( type2 @ A ) )
=> ! [K: num,L: num] :
( ( neg_numeral_sub @ A @ ( bit0 @ K ) @ ( bit0 @ L ) )
= ( neg_numeral_dbl @ A @ ( neg_numeral_sub @ A @ K @ L ) ) ) ) ).
% sub_num_simps(6)
thf(fact_237_semiring__norm_I166_J,axiom,
! [A: $tType] :
( ( neg_numeral @ A @ ( type2 @ A ) )
=> ! [V3: num,W: num,Y: A] :
( ( plus_plus @ A @ ( numeral_numeral @ A @ V3 ) @ ( plus_plus @ A @ ( uminus_uminus @ A @ ( numeral_numeral @ A @ W ) ) @ Y ) )
= ( plus_plus @ A @ ( neg_numeral_sub @ A @ V3 @ W ) @ Y ) ) ) ).
% semiring_norm(166)
thf(fact_238_semiring__norm_I167_J,axiom,
! [A: $tType] :
( ( neg_numeral @ A @ ( type2 @ A ) )
=> ! [V3: num,W: num,Y: A] :
( ( plus_plus @ A @ ( uminus_uminus @ A @ ( numeral_numeral @ A @ V3 ) ) @ ( plus_plus @ A @ ( numeral_numeral @ A @ W ) @ Y ) )
= ( plus_plus @ A @ ( neg_numeral_sub @ A @ W @ V3 ) @ Y ) ) ) ).
% semiring_norm(167)
thf(fact_239_add__neg__numeral__simps_I1_J,axiom,
! [A: $tType] :
( ( neg_numeral @ A @ ( type2 @ A ) )
=> ! [M: num,N: num] :
( ( plus_plus @ A @ ( numeral_numeral @ A @ M ) @ ( uminus_uminus @ A @ ( numeral_numeral @ A @ N ) ) )
= ( neg_numeral_sub @ A @ M @ N ) ) ) ).
% add_neg_numeral_simps(1)
thf(fact_240_add__neg__numeral__simps_I2_J,axiom,
! [A: $tType] :
( ( neg_numeral @ A @ ( type2 @ A ) )
=> ! [M: num,N: num] :
( ( plus_plus @ A @ ( uminus_uminus @ A @ ( numeral_numeral @ A @ M ) ) @ ( numeral_numeral @ A @ N ) )
= ( neg_numeral_sub @ A @ N @ M ) ) ) ).
% add_neg_numeral_simps(2)
thf(fact_241_add__neg__numeral__special_I1_J,axiom,
! [A: $tType] :
( ( neg_numeral @ A @ ( type2 @ A ) )
=> ! [M: num] :
( ( plus_plus @ A @ ( one_one @ A ) @ ( uminus_uminus @ A @ ( numeral_numeral @ A @ M ) ) )
= ( neg_numeral_sub @ A @ one2 @ M ) ) ) ).
% add_neg_numeral_special(1)
thf(fact_242_add__neg__numeral__special_I2_J,axiom,
! [A: $tType] :
( ( neg_numeral @ A @ ( type2 @ A ) )
=> ! [M: num] :
( ( plus_plus @ A @ ( uminus_uminus @ A @ ( numeral_numeral @ A @ M ) ) @ ( one_one @ A ) )
= ( neg_numeral_sub @ A @ one2 @ M ) ) ) ).
% add_neg_numeral_special(2)
thf(fact_243_sub__num__simps_I2_J,axiom,
! [A: $tType] :
( ( neg_numeral @ A @ ( type2 @ A ) )
=> ! [L: num] :
( ( neg_numeral_sub @ A @ one2 @ ( bit0 @ L ) )
= ( uminus_uminus @ A @ ( numeral_numeral @ A @ ( bitM @ L ) ) ) ) ) ).
% sub_num_simps(2)
thf(fact_244_sub__num__simps_I4_J,axiom,
! [A: $tType] :
( ( neg_numeral @ A @ ( type2 @ A ) )
=> ! [K: num] :
( ( neg_numeral_sub @ A @ ( bit0 @ K ) @ one2 )
= ( numeral_numeral @ A @ ( bitM @ K ) ) ) ) ).
% sub_num_simps(4)
thf(fact_245_eval__nat__numeral_I2_J,axiom,
! [N: num] :
( ( numeral_numeral @ nat @ ( bit0 @ N ) )
= ( suc @ ( numeral_numeral @ nat @ ( bitM @ N ) ) ) ) ).
% eval_nat_numeral(2)
thf(fact_246_one__plus__BitM,axiom,
! [N: num] :
( ( plus_plus @ num @ one2 @ ( bitM @ N ) )
= ( bit0 @ N ) ) ).
% one_plus_BitM
thf(fact_247_BitM__plus__one,axiom,
! [N: num] :
( ( plus_plus @ num @ ( bitM @ N ) @ one2 )
= ( bit0 @ N ) ) ).
% BitM_plus_one
thf(fact_248_dbl__dec__simps_I5_J,axiom,
! [A: $tType] :
( ( neg_numeral @ A @ ( type2 @ A ) )
=> ! [K: num] :
( ( neg_numeral_dbl_dec @ A @ ( numeral_numeral @ A @ K ) )
= ( numeral_numeral @ A @ ( bitM @ K ) ) ) ) ).
% dbl_dec_simps(5)
thf(fact_249_eq__numeral__iff__iszero_I8_J,axiom,
! [A: $tType] :
( ( ring_1 @ A @ ( type2 @ A ) )
=> ! [Y: num] :
( ( ( one_one @ A )
= ( uminus_uminus @ A @ ( numeral_numeral @ A @ Y ) ) )
= ( ring_1_iszero @ A @ ( numeral_numeral @ A @ ( plus_plus @ num @ one2 @ Y ) ) ) ) ) ).
% eq_numeral_iff_iszero(8)
thf(fact_250_dbl__dec__simps_I3_J,axiom,
! [A: $tType] :
( ( neg_numeral @ A @ ( type2 @ A ) )
=> ( ( neg_numeral_dbl_dec @ A @ ( one_one @ A ) )
= ( one_one @ A ) ) ) ).
% dbl_dec_simps(3)
%----Type constructors (36)
thf(tcon_fun___Orderings_Oorder,axiom,
! [A5: $tType,A6: $tType] :
( ( order @ A6 @ ( type2 @ A6 ) )
=> ( order @ ( A5 > A6 ) @ ( type2 @ ( A5 > A6 ) ) ) ) ).
thf(tcon_fun___Orderings_Oord,axiom,
! [A5: $tType,A6: $tType] :
( ( ord @ A6 @ ( type2 @ A6 ) )
=> ( ord @ ( A5 > A6 ) @ ( type2 @ ( A5 > A6 ) ) ) ) ).
thf(tcon_fun___Groups_Ouminus,axiom,
! [A5: $tType,A6: $tType] :
( ( uminus @ A6 @ ( type2 @ A6 ) )
=> ( uminus @ ( A5 > A6 ) @ ( type2 @ ( A5 > A6 ) ) ) ) ).
thf(tcon_Nat_Onat___Groups_Ostrict__ordered__ab__semigroup__add,axiom,
strict2144017051up_add @ nat @ ( type2 @ nat ) ).
thf(tcon_Nat_Onat___Groups_Oordered__cancel__ab__semigroup__add,axiom,
ordere223160158up_add @ nat @ ( type2 @ nat ) ).
thf(tcon_Nat_Onat___Groups_Oordered__ab__semigroup__add__imp__le,axiom,
ordere236663937imp_le @ nat @ ( type2 @ nat ) ).
thf(tcon_Nat_Onat___Groups_Oordered__ab__semigroup__add,axiom,
ordere779506340up_add @ nat @ ( type2 @ nat ) ).
thf(tcon_Nat_Onat___Groups_Ocancel__semigroup__add,axiom,
cancel_semigroup_add @ nat @ ( type2 @ nat ) ).
thf(tcon_Nat_Onat___Rings_Olinordered__semidom,axiom,
linordered_semidom @ nat @ ( type2 @ nat ) ).
thf(tcon_Nat_Onat___Groups_Oab__semigroup__add,axiom,
ab_semigroup_add @ nat @ ( type2 @ nat ) ).
thf(tcon_Nat_Onat___Rings_Ocomm__semiring__1,axiom,
comm_semiring_1 @ nat @ ( type2 @ nat ) ).
thf(tcon_Nat_Onat___Groups_Osemigroup__add,axiom,
semigroup_add @ nat @ ( type2 @ nat ) ).
thf(tcon_Nat_Onat___Nat_Osemiring__char__0,axiom,
semiring_char_0 @ nat @ ( type2 @ nat ) ).
thf(tcon_Nat_Onat___Orderings_Olinorder,axiom,
linorder @ nat @ ( type2 @ nat ) ).
thf(tcon_Nat_Onat___Orderings_Oorder_1,axiom,
order @ nat @ ( type2 @ nat ) ).
thf(tcon_Nat_Onat___Orderings_Oord_2,axiom,
ord @ nat @ ( type2 @ nat ) ).
thf(tcon_Nat_Onat___Num_Onumeral,axiom,
numeral @ nat @ ( type2 @ nat ) ).
thf(tcon_Nat_Onat___Groups_Oone,axiom,
one @ nat @ ( type2 @ nat ) ).
thf(tcon_Num_Onum___Orderings_Olinorder_3,axiom,
linorder @ num @ ( type2 @ num ) ).
thf(tcon_Num_Onum___Orderings_Oorder_4,axiom,
order @ num @ ( type2 @ num ) ).
thf(tcon_Num_Onum___Orderings_Oord_5,axiom,
ord @ num @ ( type2 @ num ) ).
thf(tcon_HOL_Obool___Orderings_Olinorder_6,axiom,
linorder @ $o @ ( type2 @ $o ) ).
thf(tcon_HOL_Obool___Orderings_Oorder_7,axiom,
order @ $o @ ( type2 @ $o ) ).
thf(tcon_HOL_Obool___Orderings_Oord_8,axiom,
ord @ $o @ ( type2 @ $o ) ).
thf(tcon_HOL_Obool___Groups_Ouminus_9,axiom,
uminus @ $o @ ( type2 @ $o ) ).
thf(tcon_Extended__Nat_Oenat___Groups_Ostrict__ordered__ab__semigroup__add_10,axiom,
strict2144017051up_add @ extended_enat @ ( type2 @ extended_enat ) ).
thf(tcon_Extended__Nat_Oenat___Groups_Oordered__ab__semigroup__add_11,axiom,
ordere779506340up_add @ extended_enat @ ( type2 @ extended_enat ) ).
thf(tcon_Extended__Nat_Oenat___Groups_Oab__semigroup__add_12,axiom,
ab_semigroup_add @ extended_enat @ ( type2 @ extended_enat ) ).
thf(tcon_Extended__Nat_Oenat___Rings_Ocomm__semiring__1_13,axiom,
comm_semiring_1 @ extended_enat @ ( type2 @ extended_enat ) ).
thf(tcon_Extended__Nat_Oenat___Groups_Osemigroup__add_14,axiom,
semigroup_add @ extended_enat @ ( type2 @ extended_enat ) ).
thf(tcon_Extended__Nat_Oenat___Nat_Osemiring__char__0_15,axiom,
semiring_char_0 @ extended_enat @ ( type2 @ extended_enat ) ).
thf(tcon_Extended__Nat_Oenat___Orderings_Olinorder_16,axiom,
linorder @ extended_enat @ ( type2 @ extended_enat ) ).
thf(tcon_Extended__Nat_Oenat___Orderings_Oorder_17,axiom,
order @ extended_enat @ ( type2 @ extended_enat ) ).
thf(tcon_Extended__Nat_Oenat___Orderings_Oord_18,axiom,
ord @ extended_enat @ ( type2 @ extended_enat ) ).
thf(tcon_Extended__Nat_Oenat___Num_Onumeral_19,axiom,
numeral @ extended_enat @ ( type2 @ extended_enat ) ).
thf(tcon_Extended__Nat_Oenat___Groups_Oone_20,axiom,
one @ extended_enat @ ( type2 @ extended_enat ) ).
%----Helper facts (3)
thf(help_If_3_1_T,axiom,
! [P: $o] :
( ( P = $true )
| ( P = $false ) ) ).
thf(help_If_2_1_T,axiom,
! [A: $tType,X: A,Y: A] :
( ( if @ A @ $false @ X @ Y )
= Y ) ).
thf(help_If_1_1_T,axiom,
! [A: $tType,X: A,Y: A] :
( ( if @ A @ $true @ X @ Y )
= X ) ).
%----Conjectures (1)
thf(conj_0,conjecture,
( ( coindu1079202755ist_of @ nat @ ( cons @ nat @ ma @ ( upt @ ( suc @ ma ) @ ( plus_plus @ nat @ na @ ( suc @ ma ) ) ) ) )
= ( coindu1079202755ist_of @ nat @ ( upt @ ma @ ( plus_plus @ nat @ ( suc @ na ) @ ma ) ) ) ) ).
%------------------------------------------------------------------------------