TPTP Problem File: SWW530_5.p
View Solutions
- Solve Problem
%------------------------------------------------------------------------------
% File : SWW530_5 : TPTP v9.0.0. Released v6.0.0.
% Domain : Software Verification
% Problem : Huffman's Algorithm line 569
% Version : Especial.
% English :
% Refs : [BN10] Boehme & Nipkow (2010), Sledgehammer: Judgement Day
% : [Bla09] Blanchette (2009), Proof Pearl: Mechanizing the Textbo
% : [Bla13] Blanchette (2011), Email to Geoff Sutcliffe
% Source : [Bla13]
% Names : huff_569 [Bla13]
% Status : Theorem
% Rating : 0.33 v7.5.0, 0.67 v7.4.0, 0.50 v7.3.0, 0.25 v7.1.0, 0.67 v6.4.0
% Syntax : Number of formulae : 177 ( 43 unt; 45 typ; 0 def)
% Number of atoms : 322 ( 78 equ)
% Maximal formula atoms : 7 ( 1 avg)
% Number of connectives : 204 ( 14 ~; 4 |; 15 &)
% ( 28 <=>; 143 =>; 0 <=; 0 <~>)
% Maximal formula depth : 14 ( 5 avg)
% Maximal term depth : 6 ( 1 avg)
% Number of types : 6 ( 5 usr)
% Number of type conns : 40 ( 23 >; 17 *; 0 +; 0 <<)
% Number of predicates : 17 ( 16 usr; 1 prp; 0-4 aty)
% Number of functors : 24 ( 24 usr; 5 con; 0-5 aty)
% Number of variables : 388 ( 348 !; 4 ?; 388 :)
% ( 36 !>; 0 ?*; 0 @-; 0 @+)
% SPC : TF1_THM_EQU_NAR
% Comments : This file was generated by Isabelle (most likely Sledgehammer)
% 2011-12-13 16:15:44
%------------------------------------------------------------------------------
%----Should-be-implicit typings (8)
tff(ty_t_a,type,
a: $tType ).
tff(ty_t_b,type,
b: $tType ).
tff(ty_tc_HOL_Obool,type,
bool: $tType ).
tff(ty_tc_Huffman__Mirabelle__lalbadcutu_Otree,type,
huffma1450048681e_tree: $tType > $tType ).
tff(ty_tc_Int_Oint,type,
int: $tType ).
tff(ty_tc_List_Olist,type,
list: $tType > $tType ).
tff(ty_tc_Nat_Onat,type,
nat: $tType ).
tff(ty_tc_fun,type,
fun: ( $tType * $tType ) > $tType ).
%----Explicit typings (37)
tff(sy_cl_Rings_Oring__1,type,
ring_1:
!>[A: $tType] : $o ).
tff(sy_cl_Orderings_Oord,type,
ord:
!>[A: $tType] : $o ).
tff(sy_cl_Int_Oring__char__0,type,
ring_char_0:
!>[A: $tType] : $o ).
tff(sy_cl_Orderings_Oorder,type,
order:
!>[A: $tType] : $o ).
tff(sy_cl_Rings_Osemiring__1,type,
semiring_1:
!>[A: $tType] : $o ).
tff(sy_cl_Orderings_Olinorder,type,
linorder:
!>[A: $tType] : $o ).
tff(sy_cl_Orderings_Opreorder,type,
preorder:
!>[A: $tType] : $o ).
tff(sy_cl_Nat_Osemiring__char__0,type,
semiring_char_0:
!>[A: $tType] : $o ).
tff(sy_cl_Rings_Olinordered__idom,type,
linordered_idom:
!>[A: $tType] : $o ).
tff(sy_cl_Rings_Olinordered__semidom,type,
linordered_semidom:
!>[A: $tType] : $o ).
tff(sy_c_Groups_Ozero__class_Ozero,type,
zero_zero:
!>[A: $tType] : A ).
tff(sy_c_Huffman__Mirabelle__lalbadcutu_Odepth,type,
huffma410068972_depth:
!>[A: $tType] : ( ( huffma1450048681e_tree(A) * A ) > nat ) ).
tff(sy_c_Huffman__Mirabelle__lalbadcutu_Oheight,type,
huffma945805758height:
!>[A: $tType] : ( huffma1450048681e_tree(A) > nat ) ).
tff(sy_c_Huffman__Mirabelle__lalbadcutu_Oheight_092_060_094isub_062F,type,
huffma632063779ight_F:
!>[A: $tType] : ( list(huffma1450048681e_tree(A)) > nat ) ).
tff(sy_c_If,type,
if:
!>[A: $tType] : ( ( bool * A * A ) > A ) ).
tff(sy_c_Int_Onat,type,
nat1: int > nat ).
tff(sy_c_Int_Oring__1__class_Oof__int,type,
ring_1_of_int:
!>[A: $tType] : ( int > A ) ).
tff(sy_c_List_Olinorder__class_Oinsort__key,type,
linorder_insort_key:
!>[B2: $tType,A: $tType] : ( ( fun(B2,A) * B2 * list(B2) ) > list(B2) ) ).
tff(sy_c_List_Olinorder__class_Osort__key,type,
linorder_sort_key:
!>[B2: $tType,A: $tType] : ( ( fun(B2,A) * list(B2) ) > list(B2) ) ).
tff(sy_c_List_Olist_OCons,type,
cons:
!>[A: $tType] : ( ( A * list(A) ) > list(A) ) ).
tff(sy_c_List_Olist_Olist__case,type,
list_case:
!>[T1: $tType,A: $tType] : ( ( T1 * fun(A,fun(list(A),T1)) * list(A) ) > T1 ) ).
tff(sy_c_List_Olist_Olist__rec,type,
list_rec:
!>[T1: $tType,A: $tType] : ( ( T1 * fun(A,fun(list(A),fun(T1,T1))) * list(A) ) > T1 ) ).
tff(sy_c_List_Onull,type,
null:
!>[A: $tType] : ( list(A) > $o ) ).
tff(sy_c_List_Osplice,type,
splice:
!>[A: $tType] : ( ( list(A) * list(A) ) > list(A) ) ).
tff(sy_c_Nat_Osemiring__1__class_Oof__nat,type,
semiring_1_of_nat:
!>[A: $tType] : ( nat > A ) ).
tff(sy_c_Nat__Transfer_Otransfer__morphism,type,
nat_tr1645093318rphism:
!>[B2: $tType,A: $tType] : ( ( fun(B2,A) * fun(B2,bool) ) > $o ) ).
tff(sy_c_Orderings_Oord__class_Oless__eq,type,
ord_less_eq:
!>[A: $tType] : ( ( A * A ) > $o ) ).
tff(sy_c_Orderings_Oord__class_Omax,type,
ord_max:
!>[A: $tType] : ( ( A * A ) > A ) ).
tff(sy_c_Orderings_Oorder__class_Ostrict__mono,type,
order_strict_mono:
!>[A: $tType,B2: $tType] : ( fun(A,B2) > $o ) ).
tff(sy_c_aa,type,
aa:
!>[A: $tType,B2: $tType] : ( ( fun(A,B2) * A ) > B2 ) ).
tff(sy_c_fFalse,type,
fFalse: bool ).
tff(sy_c_fTrue,type,
fTrue: bool ).
tff(sy_c_pp,type,
pp: bool > $o ).
tff(sy_v_P,type,
p: $o ).
tff(sy_v_a,type,
a1: a ).
tff(sy_v_t_092_060_094isub_0621,type,
t_1: huffma1450048681e_tree(b) ).
tff(sy_v_t_092_060_094isub_0622,type,
t_2: huffma1450048681e_tree(a) ).
%----Relevant facts (100)
tff(fact_0_depth__max__heightE__left,axiom,
! [B2: $tType,A: $tType,T_21: huffma1450048681e_tree(B2),A3: A,T_11: huffma1450048681e_tree(A)] :
( ( huffma410068972_depth(A,T_11,A3) = ord_max(nat,huffma945805758height(A,T_11),huffma945805758height(B2,T_21)) )
=> ~ ( ( huffma410068972_depth(A,T_11,A3) = huffma945805758height(A,T_11) )
=> ~ ord_less_eq(nat,huffma945805758height(B2,T_21),huffma945805758height(A,T_11)) ) ) ).
tff(fact_1_depth__le__height,axiom,
! [A: $tType,A3: A,T: huffma1450048681e_tree(A)] : ord_less_eq(nat,huffma410068972_depth(A,T,A3),huffma945805758height(A,T)) ).
tff(fact_2_min__max_Ole__sup__iff,axiom,
! [C: $tType] :
( linorder(C)
=> ! [Z: C,Y1: C,X1: C] :
( ord_less_eq(C,ord_max(C,X1,Y1),Z)
<=> ( ord_less_eq(C,X1,Z)
& ord_less_eq(C,Y1,Z) ) ) ) ).
tff(fact_3_min__max_Osup_Oleft__idem,axiom,
! [A: $tType] :
( linorder(A)
=> ! [B1: A,A3: A] : ( ord_max(A,A3,ord_max(A,A3,B1)) = ord_max(A,A3,B1) ) ) ).
tff(fact_4_min__max_Osup__left__idem,axiom,
! [A: $tType] :
( linorder(A)
=> ! [Y: A,X: A] : ( ord_max(A,X,ord_max(A,X,Y)) = ord_max(A,X,Y) ) ) ).
tff(fact_5_order__refl,axiom,
! [A: $tType] :
( preorder(A)
=> ! [X: A] : ord_less_eq(A,X,X) ) ).
tff(fact_6_le__maxI1,axiom,
! [A: $tType] :
( linorder(A)
=> ! [Y: A,X: A] : ord_less_eq(A,X,ord_max(A,X,Y)) ) ).
tff(fact_7_le__maxI2,axiom,
! [A: $tType] :
( linorder(A)
=> ! [X: A,Y: A] : ord_less_eq(A,Y,ord_max(A,X,Y)) ) ).
tff(fact_8_min__max_Ole__iff__sup,axiom,
! [C: $tType] :
( linorder(C)
=> ! [Y1: C,X1: C] :
( ord_less_eq(C,X1,Y1)
<=> ( ord_max(C,X1,Y1) = Y1 ) ) ) ).
tff(fact_9_le__max__iff__disj,axiom,
! [C: $tType] :
( linorder(C)
=> ! [Y1: C,X1: C,Z: C] :
( ord_less_eq(C,Z,ord_max(C,X1,Y1))
<=> ( ord_less_eq(C,Z,X1)
| ord_less_eq(C,Z,Y1) ) ) ) ).
tff(fact_10_min__max_Ole__supI1,axiom,
! [A: $tType] :
( linorder(A)
=> ! [B1: A,A3: A,X: A] :
( ord_less_eq(A,X,A3)
=> ord_less_eq(A,X,ord_max(A,A3,B1)) ) ) ).
tff(fact_11_min__max_Ole__supI2,axiom,
! [A: $tType] :
( linorder(A)
=> ! [A3: A,B1: A,X: A] :
( ord_less_eq(A,X,B1)
=> ord_less_eq(A,X,ord_max(A,A3,B1)) ) ) ).
tff(fact_12_min__max_Osup__absorb2,axiom,
! [A: $tType] :
( linorder(A)
=> ! [Y: A,X: A] :
( ord_less_eq(A,X,Y)
=> ( ord_max(A,X,Y) = Y ) ) ) ).
tff(fact_13_min__max_Osup__absorb1,axiom,
! [A: $tType] :
( linorder(A)
=> ! [X: A,Y: A] :
( ord_less_eq(A,Y,X)
=> ( ord_max(A,X,Y) = X ) ) ) ).
tff(fact_14_linorder__le__cases,axiom,
! [A: $tType] :
( linorder(A)
=> ! [Y: A,X: A] :
( ~ ord_less_eq(A,X,Y)
=> ord_less_eq(A,Y,X) ) ) ).
tff(fact_15_le__funE,axiom,
! [D: $tType,C: $tType] :
( ord(D)
=> ! [X1: C,G: fun(C,D),F: fun(C,D)] :
( ord_less_eq(fun(C,D),F,G)
=> ord_less_eq(D,aa(C,D,F,X1),aa(C,D,G,X1)) ) ) ).
tff(fact_16_order__trans,axiom,
! [A: $tType] :
( preorder(A)
=> ! [Z2: A,Y: A,X: A] :
( ord_less_eq(A,X,Y)
=> ( ord_less_eq(A,Y,Z2)
=> ord_less_eq(A,X,Z2) ) ) ) ).
tff(fact_17_order__antisym,axiom,
! [A: $tType] :
( order(A)
=> ! [Y: A,X: A] :
( ord_less_eq(A,X,Y)
=> ( ord_less_eq(A,Y,X)
=> ( X = Y ) ) ) ) ).
tff(fact_18_ord__le__eq__trans,axiom,
! [A: $tType] :
( ord(A)
=> ! [C2: A,B1: A,A3: A] :
( ord_less_eq(A,A3,B1)
=> ( ( B1 = C2 )
=> ord_less_eq(A,A3,C2) ) ) ) ).
tff(fact_19_ord__eq__le__trans,axiom,
! [A: $tType] :
( ord(A)
=> ! [C2: A,B1: A,A3: A] :
( ( A3 = B1 )
=> ( ord_less_eq(A,B1,C2)
=> ord_less_eq(A,A3,C2) ) ) ) ).
tff(fact_20_order__antisym__conv,axiom,
! [C: $tType] :
( order(C)
=> ! [X1: C,Y1: C] :
( ord_less_eq(C,Y1,X1)
=> ( ord_less_eq(C,X1,Y1)
<=> ( X1 = Y1 ) ) ) ) ).
tff(fact_21_le__funD,axiom,
! [D: $tType,C: $tType] :
( ord(D)
=> ! [X1: C,G: fun(C,D),F: fun(C,D)] :
( ord_less_eq(fun(C,D),F,G)
=> ord_less_eq(D,aa(C,D,F,X1),aa(C,D,G,X1)) ) ) ).
tff(fact_22_order__eq__refl,axiom,
! [A: $tType] :
( preorder(A)
=> ! [Y: A,X: A] :
( ( X = Y )
=> ord_less_eq(A,X,Y) ) ) ).
tff(fact_23_order__eq__iff,axiom,
! [C: $tType] :
( order(C)
=> ! [Y1: C,X1: C] :
( ( X1 = Y1 )
<=> ( ord_less_eq(C,X1,Y1)
& ord_less_eq(C,Y1,X1) ) ) ) ).
tff(fact_24_linorder__linear,axiom,
! [A: $tType] :
( linorder(A)
=> ! [Y: A,X: A] :
( ord_less_eq(A,X,Y)
| ord_less_eq(A,Y,X) ) ) ).
tff(fact_25_le__fun__def,axiom,
! [D: $tType,C: $tType] :
( ord(D)
=> ! [G: fun(C,D),F: fun(C,D)] :
( ord_less_eq(fun(C,D),F,G)
<=> ! [X2: C] : ord_less_eq(D,aa(C,D,F,X2),aa(C,D,G,X2)) ) ) ).
tff(fact_26_min__max_Osup__assoc,axiom,
! [A: $tType] :
( linorder(A)
=> ! [Z2: A,Y: A,X: A] : ( ord_max(A,ord_max(A,X,Y),Z2) = ord_max(A,X,ord_max(A,Y,Z2)) ) ) ).
tff(fact_27_min__max_Osup_Oassoc,axiom,
! [A: $tType] :
( linorder(A)
=> ! [C2: A,B1: A,A3: A] : ( ord_max(A,ord_max(A,A3,B1),C2) = ord_max(A,A3,ord_max(A,B1,C2)) ) ) ).
tff(fact_28_min__max_Osup__left__commute,axiom,
! [A: $tType] :
( linorder(A)
=> ! [Z2: A,Y: A,X: A] : ( ord_max(A,X,ord_max(A,Y,Z2)) = ord_max(A,Y,ord_max(A,X,Z2)) ) ) ).
tff(fact_29_min__max_Osup_Oleft__commute,axiom,
! [A: $tType] :
( linorder(A)
=> ! [C2: A,A3: A,B1: A] : ( ord_max(A,B1,ord_max(A,A3,C2)) = ord_max(A,A3,ord_max(A,B1,C2)) ) ) ).
tff(fact_30_min__max_Osup__commute,axiom,
! [A: $tType] :
( linorder(A)
=> ! [Y: A,X: A] : ( ord_max(A,X,Y) = ord_max(A,Y,X) ) ) ).
tff(fact_31_min__max_Osup_Ocommute,axiom,
! [A: $tType] :
( linorder(A)
=> ! [B1: A,A3: A] : ( ord_max(A,A3,B1) = ord_max(A,B1,A3) ) ) ).
tff(fact_32_min__max_Osup_Oidem,axiom,
! [A: $tType] :
( linorder(A)
=> ! [A3: A] : ( ord_max(A,A3,A3) = A3 ) ) ).
tff(fact_33_min__max_Ole__supE,axiom,
! [A: $tType] :
( linorder(A)
=> ! [X: A,B1: A,A3: A] :
( ord_less_eq(A,ord_max(A,A3,B1),X)
=> ~ ( ord_less_eq(A,A3,X)
=> ~ ord_less_eq(A,B1,X) ) ) ) ).
tff(fact_34_min__max_Osup__mono,axiom,
! [A: $tType] :
( linorder(A)
=> ! [D1: A,B1: A,C2: A,A3: A] :
( ord_less_eq(A,A3,C2)
=> ( ord_less_eq(A,B1,D1)
=> ord_less_eq(A,ord_max(A,A3,B1),ord_max(A,C2,D1)) ) ) ) ).
tff(fact_35_min__max_Osup__least,axiom,
! [A: $tType] :
( linorder(A)
=> ! [Z2: A,X: A,Y: A] :
( ord_less_eq(A,Y,X)
=> ( ord_less_eq(A,Z2,X)
=> ord_less_eq(A,ord_max(A,Y,Z2),X) ) ) ) ).
tff(fact_36_min__max_Ole__supI,axiom,
! [A: $tType] :
( linorder(A)
=> ! [B1: A,X: A,A3: A] :
( ord_less_eq(A,A3,X)
=> ( ord_less_eq(A,B1,X)
=> ord_less_eq(A,ord_max(A,A3,B1),X) ) ) ) ).
tff(fact_37_max__leastL,axiom,
! [A: $tType] :
( ord(A)
=> ! [X: A,Least: A] :
( ! [X3: A] : ord_less_eq(A,Least,X3)
=> ( ord_max(A,Least,X) = X ) ) ) ).
tff(fact_38_max__leastR,axiom,
! [A: $tType] :
( order(A)
=> ! [X: A,Least: A] :
( ! [X3: A] : ord_less_eq(A,Least,X3)
=> ( ord_max(A,X,Least) = X ) ) ) ).
tff(fact_39_order__subst1,axiom,
! [C: $tType,D: $tType] :
( ( order(D)
& order(C) )
=> ! [C1: D,B: D,F: fun(D,C),Aa: C] :
( ord_less_eq(C,Aa,aa(D,C,F,B))
=> ( ord_less_eq(D,B,C1)
=> ( ! [X3: D,Y2: D] :
( ord_less_eq(D,X3,Y2)
=> ord_less_eq(C,aa(D,C,F,X3),aa(D,C,F,Y2)) )
=> ord_less_eq(C,Aa,aa(D,C,F,C1)) ) ) ) ) ).
tff(fact_40_ord__eq__le__subst,axiom,
! [C: $tType,D: $tType] :
( ( ord(D)
& ord(C) )
=> ! [C1: D,B: D,F: fun(D,C),Aa: C] :
( ( Aa = aa(D,C,F,B) )
=> ( ord_less_eq(D,B,C1)
=> ( ! [X3: D,Y2: D] :
( ord_less_eq(D,X3,Y2)
=> ord_less_eq(C,aa(D,C,F,X3),aa(D,C,F,Y2)) )
=> ord_less_eq(C,Aa,aa(D,C,F,C1)) ) ) ) ) ).
tff(fact_41_order__subst2,axiom,
! [C: $tType,D: $tType] :
( ( order(D)
& order(C) )
=> ! [C1: D,F: fun(C,D),B: C,Aa: C] :
( ord_less_eq(C,Aa,B)
=> ( ord_less_eq(D,aa(C,D,F,B),C1)
=> ( ! [X3: C,Y2: C] :
( ord_less_eq(C,X3,Y2)
=> ord_less_eq(D,aa(C,D,F,X3),aa(C,D,F,Y2)) )
=> ord_less_eq(D,aa(C,D,F,Aa),C1) ) ) ) ) ).
tff(fact_42_ord__le__eq__subst,axiom,
! [C: $tType,D: $tType] :
( ( ord(D)
& ord(C) )
=> ! [C1: D,F: fun(C,D),B: C,Aa: C] :
( ord_less_eq(C,Aa,B)
=> ( ( aa(C,D,F,B) = C1 )
=> ( ! [X3: C,Y2: C] :
( ord_less_eq(C,X3,Y2)
=> ord_less_eq(D,aa(C,D,F,X3),aa(C,D,F,Y2)) )
=> ord_less_eq(D,aa(C,D,F,Aa),C1) ) ) ) ) ).
tff(fact_43_le__funI,axiom,
! [D: $tType,C: $tType] :
( ord(D)
=> ! [G: fun(C,D),F: fun(C,D)] :
( ! [X3: C] : ord_less_eq(D,aa(C,D,F,X3),aa(C,D,G,X3))
=> ord_less_eq(fun(C,D),F,G) ) ) ).
tff(fact_44_Max_Oidem,axiom,
! [A: $tType] :
( linorder(A)
=> ! [X: A] : ( ord_max(A,X,X) = X ) ) ).
tff(fact_45_le__antisym,axiom,
! [N: nat,M: nat] :
( ord_less_eq(nat,M,N)
=> ( ord_less_eq(nat,N,M)
=> ( M = N ) ) ) ).
tff(fact_46_le__refl,axiom,
! [N: nat] : ord_less_eq(nat,N,N) ).
tff(fact_47_nat__le__linear,axiom,
! [N: nat,M: nat] :
( ord_less_eq(nat,M,N)
| ord_less_eq(nat,N,M) ) ).
tff(fact_48_eq__imp__le,axiom,
! [N: nat,M: nat] :
( ( M = N )
=> ord_less_eq(nat,M,N) ) ).
tff(fact_49_le__trans,axiom,
! [K: nat,J: nat,I: nat] :
( ord_less_eq(nat,I,J)
=> ( ord_less_eq(nat,J,K)
=> ord_less_eq(nat,I,K) ) ) ).
tff(fact_50_min__max_Osup__unique,axiom,
! [C: $tType] :
( linorder(C)
=> ! [Y1: C,X1: C,F: fun(C,fun(C,C))] :
( ! [X3: C,Y2: C] : ord_less_eq(C,X3,aa(C,C,aa(C,fun(C,C),F,X3),Y2))
=> ( ! [X3: C,Y2: C] : ord_less_eq(C,Y2,aa(C,C,aa(C,fun(C,C),F,X3),Y2))
=> ( ! [X3: C,Y2: C,Z3: C] :
( ord_less_eq(C,Y2,X3)
=> ( ord_less_eq(C,Z3,X3)
=> ord_less_eq(C,aa(C,C,aa(C,fun(C,C),F,Y2),Z3),X3) ) )
=> ( ord_max(C,X1,Y1) = aa(C,C,aa(C,fun(C,C),F,X1),Y1) ) ) ) ) ) ).
tff(fact_51_of__nat__le__iff,axiom,
! [C: $tType] :
( linordered_semidom(C)
=> ! [N1: nat,M1: nat] :
( ord_less_eq(C,semiring_1_of_nat(C,M1),semiring_1_of_nat(C,N1))
<=> ord_less_eq(nat,M1,N1) ) ) ).
tff(fact_52_strict__mono__less__eq,axiom,
! [D: $tType,C: $tType] :
( ( linorder(C)
& order(D) )
=> ! [Y1: C,X1: C,F: fun(C,D)] :
( order_strict_mono(C,D,F)
=> ( ord_less_eq(D,aa(C,D,F,X1),aa(C,D,F,Y1))
<=> ord_less_eq(C,X1,Y1) ) ) ) ).
tff(fact_53_height_092_060_094isub_062F_Osimps_I2_J,axiom,
! [A: $tType,Ts: list(huffma1450048681e_tree(A)),T: huffma1450048681e_tree(A)] : ( huffma632063779ight_F(A,cons(huffma1450048681e_tree(A),T,Ts)) = ord_max(nat,huffma945805758height(A,T),huffma632063779ight_F(A,Ts)) ) ).
tff(fact_54_of__nat__eq__iff,axiom,
! [C: $tType] :
( semiring_char_0(C)
=> ! [N1: nat,M1: nat] :
( ( semiring_1_of_nat(C,M1) = semiring_1_of_nat(C,N1) )
<=> ( M1 = N1 ) ) ) ).
tff(fact_55_strict__mono__eq,axiom,
! [D: $tType,C: $tType] :
( ( linorder(C)
& order(D) )
=> ! [Y1: C,X1: C,F: fun(C,D)] :
( order_strict_mono(C,D,F)
=> ( ( aa(C,D,F,X1) = aa(C,D,F,Y1) )
<=> ( X1 = Y1 ) ) ) ) ).
tff(fact_56_list_Oinject,axiom,
! [C: $tType,List1: list(C),A2: C,List: list(C),Aa: C] :
( ( cons(C,Aa,List) = cons(C,A2,List1) )
<=> ( ( Aa = A2 )
& ( List = List1 ) ) ) ).
tff(fact_57_zle__int,axiom,
! [N1: nat,M1: nat] :
( ord_less_eq(int,semiring_1_of_nat(int,M1),semiring_1_of_nat(int,N1))
<=> ord_less_eq(nat,M1,N1) ) ).
tff(fact_58_transfer__int__nat__relations_I3_J,axiom,
! [Y1: nat,X1: nat] :
( ord_less_eq(int,semiring_1_of_nat(int,X1),semiring_1_of_nat(int,Y1))
<=> ord_less_eq(nat,X1,Y1) ) ).
tff(fact_59_not__Cons__self,axiom,
! [A: $tType,X: A,Xs1: list(A)] : ( Xs1 != cons(A,X,Xs1) ) ).
tff(fact_60_int__int__eq,axiom,
! [N1: nat,M1: nat] :
( ( semiring_1_of_nat(int,M1) = semiring_1_of_nat(int,N1) )
<=> ( M1 = N1 ) ) ).
tff(fact_61_transfer__int__nat__relations_I1_J,axiom,
! [Y1: nat,X1: nat] :
( ( semiring_1_of_nat(int,X1) = semiring_1_of_nat(int,Y1) )
<=> ( X1 = Y1 ) ) ).
tff(fact_62_int__if__cong,axiom,
! [Y1: nat,X1: nat,Pa: bool] :
( ( pp(Pa)
=> ( semiring_1_of_nat(int,X1) = semiring_1_of_nat(int,if(nat,Pa,X1,Y1)) ) )
& ( ~ pp(Pa)
=> ( semiring_1_of_nat(int,Y1) = semiring_1_of_nat(int,if(nat,Pa,X1,Y1)) ) ) ) ).
tff(fact_63_not__Cons__self2,axiom,
! [A: $tType,Xs1: list(A),X: A] : ( cons(A,X,Xs1) != Xs1 ) ).
tff(fact_64_list_Osimps_I5_J,axiom,
! [C: $tType,D: $tType,List: list(D),Aa: D,F2: fun(D,fun(list(D),C)),F1: C] : ( list_case(C,D,F1,F2,cons(D,Aa,List)) = aa(list(D),C,aa(D,fun(list(D),C),F2,Aa),List) ) ).
tff(fact_65_splice_Osimps_I3_J,axiom,
! [A: $tType,Ys1: list(A),Y: A,Xs1: list(A),X: A] : ( splice(A,cons(A,X,Xs1),cons(A,Y,Ys1)) = cons(A,X,cons(A,Y,splice(A,Xs1,Ys1))) ) ).
tff(fact_66_list_Orecs_I2_J,axiom,
! [C: $tType,D: $tType,List: list(D),Aa: D,F2: fun(D,fun(list(D),fun(C,C))),F1: C] : ( list_rec(C,D,F1,F2,cons(D,Aa,List)) = aa(C,C,aa(list(D),fun(C,C),aa(D,fun(list(D),fun(C,C)),F2,Aa),List),list_rec(C,D,F1,F2,List)) ) ).
tff(fact_67_transfer__morphismI,axiom,
! [D: $tType,C: $tType,A1: fun(C,bool),F: fun(C,D)] : nat_tr1645093318rphism(C,D,F,A1) ).
tff(fact_68_null__rec_I1_J,axiom,
! [A: $tType,Xs1: list(A),X: A] : ~ null(A,cons(A,X,Xs1)) ).
tff(fact_69_insort__key_Osimps_I2_J,axiom,
! [C: $tType,D: $tType] :
( linorder(C)
=> ! [Ys: list(D),Y1: D,X1: D,F: fun(D,C)] :
( ( ord_less_eq(C,aa(D,C,F,X1),aa(D,C,F,Y1))
=> ( linorder_insort_key(D,C,F,X1,cons(D,Y1,Ys)) = cons(D,X1,cons(D,Y1,Ys)) ) )
& ( ~ ord_less_eq(C,aa(D,C,F,X1),aa(D,C,F,Y1))
=> ( linorder_insort_key(D,C,F,X1,cons(D,Y1,Ys)) = cons(D,Y1,linorder_insort_key(D,C,F,X1,Ys)) ) ) ) ) ).
tff(fact_70_transfer__morphism__def,axiom,
! [D: $tType,C: $tType,A1: fun(C,bool),F: fun(C,D)] : nat_tr1645093318rphism(C,D,F,A1) ).
tff(fact_71_insort__key__left__comm,axiom,
! [C: $tType,D: $tType] :
( linorder(C)
=> ! [Xs: list(D),Y1: D,X1: D,F: fun(D,C)] :
( ( aa(D,C,F,X1) != aa(D,C,F,Y1) )
=> ( linorder_insort_key(D,C,F,Y1,linorder_insort_key(D,C,F,X1,Xs)) = linorder_insort_key(D,C,F,X1,linorder_insort_key(D,C,F,Y1,Xs)) ) ) ) ).
tff(fact_72_sort__key__simps_I2_J,axiom,
! [D: $tType,C: $tType] :
( linorder(D)
=> ! [Xs: list(C),X1: C,F: fun(C,D)] : ( linorder_sort_key(C,D,F,cons(C,X1,Xs)) = linorder_insort_key(C,D,F,X1,linorder_sort_key(C,D,F,Xs)) ) ) ).
tff(fact_73_nat__le__iff,axiom,
! [N1: nat,X1: int] :
( ord_less_eq(nat,nat1(X1),N1)
<=> ord_less_eq(int,X1,semiring_1_of_nat(int,N1)) ) ).
tff(fact_74_of__int__of__nat__eq,axiom,
! [A: $tType] :
( ring_1(A)
=> ! [N: nat] : ( ring_1_of_int(A,semiring_1_of_nat(int,N)) = semiring_1_of_nat(A,N) ) ) ).
tff(fact_75_of__int__eq__iff,axiom,
! [C: $tType] :
( ring_char_0(C)
=> ! [Z: int,W: int] :
( ( ring_1_of_int(C,W) = ring_1_of_int(C,Z) )
<=> ( W = Z ) ) ) ).
tff(fact_76_of__int__le__iff,axiom,
! [C: $tType] :
( linordered_idom(C)
=> ! [Z: int,W: int] :
( ord_less_eq(C,ring_1_of_int(C,W),ring_1_of_int(C,Z))
<=> ord_less_eq(int,W,Z) ) ) ).
tff(fact_77_nat__mono,axiom,
! [Y: int,X: int] :
( ord_less_eq(int,X,Y)
=> ord_less_eq(nat,nat1(X),nat1(Y)) ) ).
tff(fact_78_nat__int,axiom,
! [N: nat] : ( nat1(semiring_1_of_nat(int,N)) = N ) ).
tff(fact_79_of__int__int__eq,axiom,
! [N: nat] : ( ring_1_of_int(int,semiring_1_of_nat(int,N)) = semiring_1_of_nat(int,N) ) ).
tff(fact_80_nat__if__cong,axiom,
! [Y1: int,X1: int,Pa: bool] :
( ( pp(Pa)
=> ( nat1(X1) = nat1(if(int,Pa,X1,Y1)) ) )
& ( ~ pp(Pa)
=> ( nat1(Y1) = nat1(if(int,Pa,X1,Y1)) ) ) ) ).
tff(fact_81_of__nat__nat,axiom,
! [A: $tType] :
( ring_1(A)
=> ! [Z2: int] :
( ord_less_eq(int,zero_zero(int),Z2)
=> ( semiring_1_of_nat(A,nat1(Z2)) = ring_1_of_int(A,Z2) ) ) ) ).
tff(fact_82_int__nat__eq,axiom,
! [Z2: int] :
( ( ord_less_eq(int,zero_zero(int),Z2)
=> ( semiring_1_of_nat(int,nat1(Z2)) = Z2 ) )
& ( ~ ord_less_eq(int,zero_zero(int),Z2)
=> ( semiring_1_of_nat(int,nat1(Z2)) = zero_zero(int) ) ) ) ).
tff(fact_83_of__nat__0,axiom,
! [A: $tType] :
( semiring_1(A)
=> ( semiring_1_of_nat(A,zero_zero(nat)) = zero_zero(A) ) ) ).
tff(fact_84_of__int__eq__0__iff,axiom,
! [C: $tType] :
( ring_char_0(C)
=> ! [Z: int] :
( ( ring_1_of_int(C,Z) = zero_zero(C) )
<=> ( Z = zero_zero(int) ) ) ) ).
tff(fact_85_of__int__0__eq__iff,axiom,
! [C: $tType] :
( ring_char_0(C)
=> ! [Z: int] :
( ( zero_zero(C) = ring_1_of_int(C,Z) )
<=> ( Z = zero_zero(int) ) ) ) ).
tff(fact_86_of__int__0,axiom,
! [A: $tType] :
( ring_1(A)
=> ( ring_1_of_int(A,zero_zero(int)) = zero_zero(A) ) ) ).
tff(fact_87_of__int__le__0__iff,axiom,
! [C: $tType] :
( linordered_idom(C)
=> ! [Z: int] :
( ord_less_eq(C,ring_1_of_int(C,Z),zero_zero(C))
<=> ord_less_eq(int,Z,zero_zero(int)) ) ) ).
tff(fact_88_of__int__0__le__iff,axiom,
! [C: $tType] :
( linordered_idom(C)
=> ! [Z: int] :
( ord_less_eq(C,zero_zero(C),ring_1_of_int(C,Z))
<=> ord_less_eq(int,zero_zero(int),Z) ) ) ).
tff(fact_89_zero__le__imp__of__nat,axiom,
! [A: $tType] :
( linordered_semidom(A)
=> ! [M: nat] : ord_less_eq(A,zero_zero(A),semiring_1_of_nat(A,M)) ) ).
tff(fact_90_of__nat__0__le__iff,axiom,
! [A: $tType] :
( linordered_semidom(A)
=> ! [N: nat] : ord_less_eq(A,zero_zero(A),semiring_1_of_nat(A,N)) ) ).
tff(fact_91_Nat__Transfer_Otransfer__nat__int__function__closures_I5_J,axiom,
ord_less_eq(int,zero_zero(int),zero_zero(int)) ).
tff(fact_92_zero__zle__int,axiom,
! [N: nat] : ord_less_eq(int,zero_zero(int),semiring_1_of_nat(int,N)) ).
tff(fact_93_Nat__Transfer_Otransfer__nat__int__function__closures_I9_J,axiom,
! [Z2: nat] : ord_less_eq(int,zero_zero(int),semiring_1_of_nat(int,Z2)) ).
tff(fact_94_transfer__int__nat__quantifiers_I2_J,axiom,
! [Pa: fun(int,bool)] :
( ? [X2: int] :
( ord_less_eq(int,zero_zero(int),X2)
& pp(aa(int,bool,Pa,X2)) )
<=> ? [X2: nat] : pp(aa(int,bool,Pa,semiring_1_of_nat(int,X2))) ) ).
tff(fact_95_transfer__int__nat__quantifiers_I1_J,axiom,
! [Pa: fun(int,bool)] :
( ! [X2: int] :
( ord_less_eq(int,zero_zero(int),X2)
=> pp(aa(int,bool,Pa,X2)) )
<=> ! [X2: nat] : pp(aa(int,bool,Pa,semiring_1_of_nat(int,X2))) ) ).
tff(fact_96_ex__nat,axiom,
! [Pa: fun(nat,bool)] :
( ? [X11: nat] : pp(aa(nat,bool,Pa,X11))
<=> ? [X2: int] :
( ord_less_eq(int,zero_zero(int),X2)
& pp(aa(nat,bool,Pa,nat1(X2))) ) ) ).
tff(fact_97_all__nat,axiom,
! [Pa: fun(nat,bool)] :
( ! [X11: nat] : pp(aa(nat,bool,Pa,X11))
<=> ! [X2: int] :
( ord_less_eq(int,zero_zero(int),X2)
=> pp(aa(nat,bool,Pa,nat1(X2))) ) ) ).
tff(fact_98_transfer__nat__int__relations_I1_J,axiom,
! [Y1: int,X1: int] :
( ord_less_eq(int,zero_zero(int),X1)
=> ( ord_less_eq(int,zero_zero(int),Y1)
=> ( ( nat1(X1) = nat1(Y1) )
<=> ( X1 = Y1 ) ) ) ) ).
tff(fact_99_eq__nat__nat__iff,axiom,
! [Z1: int,Z: int] :
( ord_less_eq(int,zero_zero(int),Z)
=> ( ord_less_eq(int,zero_zero(int),Z1)
=> ( ( nat1(Z) = nat1(Z1) )
<=> ( Z = Z1 ) ) ) ) ).
%----Arities (24)
tff(arity_fun___Orderings_Opreorder,axiom,
! [T_1: $tType,T_2: $tType] :
( preorder(T_2)
=> preorder(fun(T_1,T_2)) ) ).
tff(arity_fun___Orderings_Oorder,axiom,
! [T_1: $tType,T_2: $tType] :
( order(T_2)
=> order(fun(T_1,T_2)) ) ).
tff(arity_fun___Orderings_Oord,axiom,
! [T_1: $tType,T_2: $tType] :
( ord(T_2)
=> ord(fun(T_1,T_2)) ) ).
tff(arity_Int_Oint___Rings_Olinordered__semidom,axiom,
linordered_semidom(int) ).
tff(arity_Int_Oint___Rings_Olinordered__idom,axiom,
linordered_idom(int) ).
tff(arity_Int_Oint___Nat_Osemiring__char__0,axiom,
semiring_char_0(int) ).
tff(arity_Int_Oint___Orderings_Opreorder,axiom,
preorder(int) ).
tff(arity_Int_Oint___Orderings_Olinorder,axiom,
linorder(int) ).
tff(arity_Int_Oint___Rings_Osemiring__1,axiom,
semiring_1(int) ).
tff(arity_Int_Oint___Orderings_Oorder,axiom,
order(int) ).
tff(arity_Int_Oint___Int_Oring__char__0,axiom,
ring_char_0(int) ).
tff(arity_Int_Oint___Orderings_Oord,axiom,
ord(int) ).
tff(arity_Int_Oint___Rings_Oring__1,axiom,
ring_1(int) ).
tff(arity_Nat_Onat___Rings_Olinordered__semidom,axiom,
linordered_semidom(nat) ).
tff(arity_Nat_Onat___Nat_Osemiring__char__0,axiom,
semiring_char_0(nat) ).
tff(arity_Nat_Onat___Orderings_Opreorder,axiom,
preorder(nat) ).
tff(arity_Nat_Onat___Orderings_Olinorder,axiom,
linorder(nat) ).
tff(arity_Nat_Onat___Rings_Osemiring__1,axiom,
semiring_1(nat) ).
tff(arity_Nat_Onat___Orderings_Oorder,axiom,
order(nat) ).
tff(arity_Nat_Onat___Orderings_Oord,axiom,
ord(nat) ).
tff(arity_HOL_Obool___Orderings_Opreorder,axiom,
preorder(bool) ).
tff(arity_HOL_Obool___Orderings_Olinorder,axiom,
linorder(bool) ).
tff(arity_HOL_Obool___Orderings_Oorder,axiom,
order(bool) ).
tff(arity_HOL_Obool___Orderings_Oord,axiom,
ord(bool) ).
%----Helper facts (5)
tff(help_If_1_1_T,axiom,
! [A: $tType,Y: A,X: A] : ( if(A,fTrue,X,Y) = X ) ).
tff(help_If_2_1_T,axiom,
! [A: $tType,Y: A,X: A] : ( if(A,fFalse,X,Y) = Y ) ).
tff(help_If_3_1_T,axiom,
! [P: bool] :
( ( P = fTrue )
| ( P = fFalse ) ) ).
tff(help_pp_1_1_U,axiom,
~ pp(fFalse) ).
tff(help_pp_2_1_U,axiom,
pp(fTrue) ).
%----Conjectures (3)
tff(conj_0,hypothesis,
huffma410068972_depth(a,t_2,a1) = ord_max(nat,huffma945805758height(b,t_1),huffma945805758height(a,t_2)) ).
tff(conj_1,hypothesis,
( ( huffma410068972_depth(a,t_2,a1) = huffma945805758height(a,t_2) )
=> ( ord_less_eq(nat,huffma945805758height(b,t_1),huffma945805758height(a,t_2))
=> p ) ) ).
tff(conj_2,conjecture,
p ).
%------------------------------------------------------------------------------