TPTP Problem File: DAT225^1.p
View Solutions
- Solve Problem
%------------------------------------------------------------------------------
% File : DAT225^1 : TPTP v9.0.0. Released v7.0.0.
% Domain : Data Structures
% Problem : Tllist 693
% 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 : tllist__693.p [Bla16]
% Status : Theorem
% Rating : 0.67 v8.1.0, 1.00 v7.1.0
% Syntax : Number of formulae : 308 ( 152 unt; 49 typ; 0 def)
% Number of atoms : 596 ( 292 equ; 0 cnn)
% Maximal formula atoms : 11 ( 2 avg)
% Number of connectives : 4175 ( 92 ~; 14 |; 64 &;3764 @)
% ( 0 <=>; 241 =>; 0 <=; 0 <~>)
% Maximal formula depth : 28 ( 8 avg)
% Number of types : 7 ( 6 usr)
% Number of type conns : 317 ( 317 >; 0 *; 0 +; 0 <<)
% Number of symbols : 46 ( 43 usr; 4 con; 0-7 aty)
% Number of variables : 1329 ( 124 ^;1118 !; 39 ?;1329 :)
% ( 48 !>; 0 ?*; 0 @-; 0 @+)
% SPC : TH1_THM_EQU_NAR
% Comments : This file was generated by Isabelle (most likely Sledgehammer)
% 2016-07-13 14:53:24.453
%------------------------------------------------------------------------------
%----Could-be-implicit typings (11)
thf(ty_t_TLList__Mirabelle__qhjoikztpd_Otllist,type,
tLList446370796tllist: $tType > $tType > $tType ).
thf(ty_t_Coinductive__List_Ollist,type,
coinductive_llist: $tType > $tType ).
thf(ty_t_Product__Type_Oprod,type,
product_prod: $tType > $tType > $tType ).
thf(ty_t_Set_Oset,type,
set: $tType > $tType ).
thf(ty_t_itself,type,
itself: $tType > $tType ).
thf(ty_tf_f,type,
f: $tType ).
thf(ty_tf_e,type,
e: $tType ).
thf(ty_tf_d,type,
d: $tType ).
thf(ty_tf_c,type,
c: $tType ).
thf(ty_tf_b,type,
b: $tType ).
thf(ty_tf_a,type,
a: $tType ).
%----Explicit typings (38)
thf(sy_c_Coinductive__List_Ofinite__lprefix,type,
coindu328551480prefix:
!>[A: $tType] : ( ( coinductive_llist @ A ) > ( coinductive_llist @ A ) > $o ) ).
thf(sy_c_Coinductive__List_Olappend,type,
coinductive_lappend:
!>[A: $tType] : ( ( coinductive_llist @ A ) > ( coinductive_llist @ A ) > ( coinductive_llist @ A ) ) ).
thf(sy_c_Coinductive__List_Olfilter,type,
coinductive_lfilter:
!>[A: $tType] : ( ( A > $o ) > ( coinductive_llist @ A ) > ( coinductive_llist @ A ) ) ).
thf(sy_c_Coinductive__List_Olfinite,type,
coinductive_lfinite:
!>[A: $tType] : ( ( coinductive_llist @ A ) > $o ) ).
thf(sy_c_Coinductive__List_Ollast,type,
coinductive_llast:
!>[A: $tType] : ( ( coinductive_llist @ A ) > A ) ).
thf(sy_c_Coinductive__List_Ollist_OLCons,type,
coinductive_LCons:
!>[A: $tType] : ( A > ( coinductive_llist @ A ) > ( coinductive_llist @ A ) ) ).
thf(sy_c_Coinductive__List_Ollist_OLNil,type,
coinductive_LNil:
!>[A: $tType] : ( coinductive_llist @ A ) ).
thf(sy_c_Coinductive__List_Ollist_Ollist__all2,type,
coindu1486289336t_all2:
!>[A: $tType,B: $tType] : ( ( A > B > $o ) > ( coinductive_llist @ A ) > ( coinductive_llist @ B ) > $o ) ).
thf(sy_c_Coinductive__List_Ollist_Olnull,type,
coinductive_lnull:
!>[A: $tType] : ( ( coinductive_llist @ A ) > $o ) ).
thf(sy_c_Coinductive__List_Ollist_Olset,type,
coinductive_lset:
!>[A: $tType] : ( ( coinductive_llist @ A ) > ( set @ A ) ) ).
thf(sy_c_Coinductive__List_Olprefix,type,
coinductive_lprefix:
!>[A: $tType] : ( ( coinductive_llist @ A ) > ( coinductive_llist @ A ) > $o ) ).
thf(sy_c_Coinductive__List_Olstrict__prefix,type,
coindu1478340336prefix:
!>[A: $tType] : ( ( coinductive_llist @ A ) > ( coinductive_llist @ A ) > $o ) ).
thf(sy_c_HOL_OThe,type,
the:
!>[A: $tType] : ( ( A > $o ) > A ) ).
thf(sy_c_HOL_Oundefined,type,
undefined:
!>[A: $tType] : A ).
thf(sy_c_If,type,
if:
!>[A: $tType] : ( $o > A > A > A ) ).
thf(sy_c_Lattices_Osup__class_Osup,type,
sup_sup:
!>[A: $tType] : ( A > A > A ) ).
thf(sy_c_Product__Type_OPair,type,
product_Pair:
!>[A: $tType,B: $tType] : ( A > B > ( product_prod @ A @ B ) ) ).
thf(sy_c_Product__Type_Oapfst,type,
product_apfst:
!>[A: $tType,C: $tType,B: $tType] : ( ( A > C ) > ( product_prod @ A @ B ) > ( product_prod @ C @ B ) ) ).
thf(sy_c_Product__Type_Ointernal__case__prod,type,
produc2004651681e_prod:
!>[A: $tType,B: $tType,C: $tType] : ( ( A > B > C ) > ( product_prod @ A @ B ) > C ) ).
thf(sy_c_Product__Type_Oprod_Ocase__prod,type,
product_case_prod:
!>[A: $tType,B: $tType,C: $tType] : ( ( A > B > C ) > ( product_prod @ A @ B ) > C ) ).
thf(sy_c_Product__Type_Oprod_Ofst,type,
product_fst:
!>[A: $tType,B: $tType] : ( ( product_prod @ A @ B ) > A ) ).
thf(sy_c_Product__Type_Oprod_Osnd,type,
product_snd:
!>[A: $tType,B: $tType] : ( ( product_prod @ A @ B ) > B ) ).
thf(sy_c_Product__Type_Oprod_Oswap,type,
product_swap:
!>[A: $tType,B: $tType] : ( ( product_prod @ A @ B ) > ( product_prod @ B @ A ) ) ).
thf(sy_c_Product__Type_Oscomp,type,
product_scomp:
!>[A: $tType,B: $tType,C: $tType,D: $tType] : ( ( A > ( product_prod @ B @ C ) ) > ( B > C > D ) > A > D ) ).
thf(sy_c_Pure_Otype,type,
type:
!>[A: $tType] : ( itself @ A ) ).
thf(sy_c_Relation_Oreflp,type,
reflp:
!>[A: $tType] : ( ( A > A > $o ) > $o ) ).
thf(sy_c_Set_OCollect,type,
collect:
!>[A: $tType] : ( ( A > $o ) > ( set @ A ) ) ).
thf(sy_c_TLList__Mirabelle__qhjoikztpd_Ocr__tllist,type,
tLList47617868tllist:
!>[A: $tType,B: $tType] : ( ( product_prod @ ( coinductive_llist @ A ) @ B ) > ( tLList446370796tllist @ A @ B ) > $o ) ).
thf(sy_c_TLList__Mirabelle__qhjoikztpd_Olappendt,type,
tLList98099029ppendt:
!>[A: $tType,B: $tType] : ( ( coinductive_llist @ A ) > ( tLList446370796tllist @ A @ B ) > ( tLList446370796tllist @ A @ B ) ) ).
thf(sy_c_TLList__Mirabelle__qhjoikztpd_Otllist__of__llist,type,
tLList1672613558_llist:
!>[B: $tType,A: $tType] : ( B > ( coinductive_llist @ A ) > ( tLList446370796tllist @ A @ B ) ) ).
thf(sy_c_member,type,
member:
!>[A: $tType] : ( A > ( set @ A ) > $o ) ).
thf(sy_v_Pa,type,
pa: a > b > $o ).
thf(sy_v_Qa,type,
qa: c > d > $o ).
thf(sy_v_Ra,type,
ra: e > f > $o ).
thf(sy_v_xs_Ha,type,
xs_a: c > ( product_prod @ ( coinductive_llist @ a ) @ e ) ).
thf(sy_v_xsa,type,
xsa: product_prod @ ( coinductive_llist @ a ) @ c ).
thf(sy_v_ys_Ha,type,
ys_a: d > ( product_prod @ ( coinductive_llist @ b ) @ f ) ).
thf(sy_v_ysa,type,
ysa: product_prod @ ( coinductive_llist @ b ) @ d ).
%----Relevant facts (253)
thf(fact_0_fst__apfst,axiom,
! [A: $tType,B: $tType,C: $tType,F: C > A,X: product_prod @ C @ B] :
( ( product_fst @ A @ B @ ( product_apfst @ C @ A @ B @ F @ X ) )
= ( F @ ( product_fst @ C @ B @ X ) ) ) ).
% fst_apfst
thf(fact_1_apfst__eq__conv,axiom,
! [A: $tType,B: $tType,C: $tType,F: C > A,X: product_prod @ C @ B,G: C > A] :
( ( ( product_apfst @ C @ A @ B @ F @ X )
= ( product_apfst @ C @ A @ B @ G @ X ) )
= ( ( F @ ( product_fst @ C @ B @ X ) )
= ( G @ ( product_fst @ C @ B @ X ) ) ) ) ).
% apfst_eq_conv
thf(fact_2_lfinite__lappend,axiom,
! [A: $tType,Xs: coinductive_llist @ A,Ys: coinductive_llist @ A] :
( ( coinductive_lfinite @ A @ ( coinductive_lappend @ A @ Xs @ Ys ) )
= ( ( coinductive_lfinite @ A @ Xs )
& ( coinductive_lfinite @ A @ Ys ) ) ) ).
% lfinite_lappend
thf(fact_3_split__part,axiom,
! [B: $tType,A: $tType,P: $o,Q: A > B > $o] :
( ( product_case_prod @ A @ B @ $o
@ ^ [A2: A,B2: B] :
( P
& ( Q @ A2 @ B2 ) ) )
= ( ^ [Ab: product_prod @ A @ B] :
( P
& ( product_case_prod @ A @ B @ $o @ Q @ Ab ) ) ) ) ).
% split_part
thf(fact_4_llist__all2__lappendI,axiom,
! [A: $tType,B: $tType,P: A > B > $o,Xs: coinductive_llist @ A,Ys: coinductive_llist @ B,Xs2: coinductive_llist @ A,Ys2: coinductive_llist @ B] :
( ( coindu1486289336t_all2 @ A @ B @ P @ Xs @ Ys )
=> ( ( ( coinductive_lfinite @ A @ Xs )
=> ( ( coinductive_lfinite @ B @ Ys )
=> ( coindu1486289336t_all2 @ A @ B @ P @ Xs2 @ Ys2 ) ) )
=> ( coindu1486289336t_all2 @ A @ B @ P @ ( coinductive_lappend @ A @ Xs @ Xs2 ) @ ( coinductive_lappend @ B @ Ys @ Ys2 ) ) ) ) ).
% llist_all2_lappendI
thf(fact_5_fst__def,axiom,
! [B: $tType,A: $tType] :
( ( product_fst @ A @ B )
= ( product_case_prod @ A @ B @ A
@ ^ [X1: A,X2: B] : X1 ) ) ).
% fst_def
thf(fact_6_case__prod__app,axiom,
! [A: $tType,D: $tType,C: $tType,B: $tType] :
( ( product_case_prod @ B @ C @ ( D > A ) )
= ( ^ [F2: B > C > D > A,X3: product_prod @ B @ C,Y: D] :
( product_case_prod @ B @ C @ A
@ ^ [L: B,R: C] : ( F2 @ L @ R @ Y )
@ X3 ) ) ) ).
% case_prod_app
thf(fact_7_lappend__inf,axiom,
! [A: $tType,Xs: coinductive_llist @ A,Ys: coinductive_llist @ A] :
( ~ ( coinductive_lfinite @ A @ Xs )
=> ( ( coinductive_lappend @ A @ Xs @ Ys )
= Xs ) ) ).
% lappend_inf
thf(fact_8_llist__all2__lfiniteD,axiom,
! [A: $tType,B: $tType,P: A > B > $o,Xs: coinductive_llist @ A,Ys: coinductive_llist @ B] :
( ( coindu1486289336t_all2 @ A @ B @ P @ Xs @ Ys )
=> ( ( coinductive_lfinite @ A @ Xs )
= ( coinductive_lfinite @ B @ Ys ) ) ) ).
% llist_all2_lfiniteD
thf(fact_9_llist__all2__conj,axiom,
! [A: $tType,B: $tType,P: A > B > $o,Q: A > B > $o,Xs: coinductive_llist @ A,Ys: coinductive_llist @ B] :
( ( coindu1486289336t_all2 @ A @ B
@ ^ [X3: A,Y: B] :
( ( P @ X3 @ Y )
& ( Q @ X3 @ Y ) )
@ Xs
@ Ys )
= ( ( coindu1486289336t_all2 @ A @ B @ P @ Xs @ Ys )
& ( coindu1486289336t_all2 @ A @ B @ Q @ Xs @ Ys ) ) ) ).
% llist_all2_conj
thf(fact_10_prod_Odisc__eq__case,axiom,
! [B: $tType,A: $tType,Prod: product_prod @ A @ B] :
( product_case_prod @ A @ B @ $o
@ ^ [Uu: A,Uv: B] : $true
@ Prod ) ).
% prod.disc_eq_case
thf(fact_11_prod_Ocase__distrib,axiom,
! [C: $tType,D: $tType,B: $tType,A: $tType,H: C > D,F: A > B > C,Prod: product_prod @ A @ B] :
( ( H @ ( product_case_prod @ A @ B @ C @ F @ Prod ) )
= ( product_case_prod @ A @ B @ D
@ ^ [X1: A,X2: B] : ( H @ ( F @ X1 @ X2 ) )
@ Prod ) ) ).
% prod.case_distrib
thf(fact_12_llist_Orel__refl,axiom,
! [B: $tType,Ra: B > B > $o,X: coinductive_llist @ B] :
( ! [X4: B] : ( Ra @ X4 @ X4 )
=> ( coindu1486289336t_all2 @ B @ B @ Ra @ X @ X ) ) ).
% llist.rel_refl
thf(fact_13_llist_Orel__eq,axiom,
! [A: $tType] :
( ( coindu1486289336t_all2 @ A @ A
@ ^ [Y2: A,Z: A] : ( Y2 = Z ) )
= ( ^ [Y2: coinductive_llist @ A,Z: coinductive_llist @ A] : ( Y2 = Z ) ) ) ).
% llist.rel_eq
thf(fact_14_llist__all2__mono,axiom,
! [A: $tType,B: $tType,P: A > B > $o,Xs: coinductive_llist @ A,Ys: coinductive_llist @ B,P2: A > B > $o] :
( ( coindu1486289336t_all2 @ A @ B @ P @ Xs @ Ys )
=> ( ! [X4: A,Y3: B] :
( ( P @ X4 @ Y3 )
=> ( P2 @ X4 @ Y3 ) )
=> ( coindu1486289336t_all2 @ A @ B @ P2 @ Xs @ Ys ) ) ) ).
% llist_all2_mono
thf(fact_15_llist__all2__rsp,axiom,
! [A: $tType,B: $tType,R2: A > B > $o,S: A > A > $o,T: B > B > $o,X: coinductive_llist @ A,Y4: coinductive_llist @ B,A3: coinductive_llist @ A,B3: coinductive_llist @ B] :
( ! [X4: A,Y3: B] :
( ( R2 @ X4 @ Y3 )
=> ! [A4: A,B4: B] :
( ( R2 @ A4 @ B4 )
=> ( ( S @ X4 @ A4 )
= ( T @ Y3 @ B4 ) ) ) )
=> ( ( coindu1486289336t_all2 @ A @ B @ R2 @ X @ Y4 )
=> ( ( coindu1486289336t_all2 @ A @ B @ R2 @ A3 @ B3 )
=> ( ( coindu1486289336t_all2 @ A @ A @ S @ X @ A3 )
= ( coindu1486289336t_all2 @ B @ B @ T @ Y4 @ B3 ) ) ) ) ) ).
% llist_all2_rsp
thf(fact_16_lappend__assoc,axiom,
! [A: $tType,Xs: coinductive_llist @ A,Ys: coinductive_llist @ A,Zs: coinductive_llist @ A] :
( ( coinductive_lappend @ A @ ( coinductive_lappend @ A @ Xs @ Ys ) @ Zs )
= ( coinductive_lappend @ A @ Xs @ ( coinductive_lappend @ A @ Ys @ Zs ) ) ) ).
% lappend_assoc
thf(fact_17_internal__case__prod__def,axiom,
! [C: $tType,B: $tType,A: $tType] :
( ( produc2004651681e_prod @ A @ B @ C )
= ( product_case_prod @ A @ B @ C ) ) ).
% internal_case_prod_def
thf(fact_18_reflp__tllist,axiom,
! [B: $tType,A: $tType] :
( reflp @ ( product_prod @ ( coinductive_llist @ A ) @ B )
@ ( product_case_prod @ ( coinductive_llist @ A ) @ B @ ( ( product_prod @ ( coinductive_llist @ A ) @ B ) > $o )
@ ^ [Xs3: coinductive_llist @ A,A2: B] :
( product_case_prod @ ( coinductive_llist @ A ) @ B @ $o
@ ^ [Ys3: coinductive_llist @ A,B2: B] :
( ( Xs3 = Ys3 )
& ( ( coinductive_lfinite @ A @ Ys3 )
=> ( A2 = B2 ) ) ) ) ) ) ).
% reflp_tllist
thf(fact_19_tllist_Oabs__eq__iff,axiom,
! [B: $tType,A: $tType,X: product_prod @ ( coinductive_llist @ A ) @ B,Y4: product_prod @ ( coinductive_llist @ A ) @ B] :
( ( ( product_case_prod @ ( coinductive_llist @ A ) @ B @ ( tLList446370796tllist @ A @ B )
@ ^ [Xs3: coinductive_llist @ A,A2: B] : ( tLList1672613558_llist @ B @ A @ A2 @ Xs3 )
@ X )
= ( product_case_prod @ ( coinductive_llist @ A ) @ B @ ( tLList446370796tllist @ A @ B )
@ ^ [Xs3: coinductive_llist @ A,A2: B] : ( tLList1672613558_llist @ B @ A @ A2 @ Xs3 )
@ Y4 ) )
= ( product_case_prod @ ( coinductive_llist @ A ) @ B @ ( ( product_prod @ ( coinductive_llist @ A ) @ B ) > $o )
@ ^ [Xs3: coinductive_llist @ A,A2: B] :
( product_case_prod @ ( coinductive_llist @ A ) @ B @ $o
@ ^ [Ys3: coinductive_llist @ A,B2: B] :
( ( Xs3 = Ys3 )
& ( ( coinductive_lfinite @ A @ Ys3 )
=> ( A2 = B2 ) ) ) )
@ X
@ Y4 ) ) ).
% tllist.abs_eq_iff
thf(fact_20_case__swap,axiom,
! [A: $tType,B: $tType,C: $tType,F: C > B > A,P3: product_prod @ C @ B] :
( ( product_case_prod @ B @ C @ A
@ ^ [Y: B,X3: C] : ( F @ X3 @ Y )
@ ( product_swap @ C @ B @ P3 ) )
= ( product_case_prod @ C @ B @ A @ F @ P3 ) ) ).
% case_swap
thf(fact_21_llast__linfinite,axiom,
! [A: $tType,Xs: coinductive_llist @ A] :
( ~ ( coinductive_lfinite @ A @ Xs )
=> ( ( coinductive_llast @ A @ Xs )
= ( undefined @ A ) ) ) ).
% llast_linfinite
thf(fact_22_scomp__apply,axiom,
! [A: $tType,D: $tType,C: $tType,B: $tType] :
( ( product_scomp @ B @ C @ D @ A )
= ( ^ [F2: B > ( product_prod @ C @ D ),G2: C > D > A,X3: B] : ( product_case_prod @ C @ D @ A @ G2 @ ( F2 @ X3 ) ) ) ) ).
% scomp_apply
thf(fact_23_lprefix__lappend__same,axiom,
! [A: $tType,Xs: coinductive_llist @ A,Ys: coinductive_llist @ A,Zs: coinductive_llist @ A] :
( ( coinductive_lprefix @ A @ ( coinductive_lappend @ A @ Xs @ Ys ) @ ( coinductive_lappend @ A @ Xs @ Zs ) )
= ( ( coinductive_lfinite @ A @ Xs )
=> ( coinductive_lprefix @ A @ Ys @ Zs ) ) ) ).
% lprefix_lappend_same
thf(fact_24_lfilter__lappend__lfinite,axiom,
! [A: $tType,Xs: coinductive_llist @ A,P: A > $o,Ys: coinductive_llist @ A] :
( ( coinductive_lfinite @ A @ Xs )
=> ( ( coinductive_lfilter @ A @ P @ ( coinductive_lappend @ A @ Xs @ Ys ) )
= ( coinductive_lappend @ A @ ( coinductive_lfilter @ A @ P @ Xs ) @ ( coinductive_lfilter @ A @ P @ Ys ) ) ) ) ).
% lfilter_lappend_lfinite
thf(fact_25_case__prod__unfold,axiom,
! [C: $tType,B: $tType,A: $tType] :
( ( product_case_prod @ A @ B @ C )
= ( ^ [C2: A > B > C,P4: product_prod @ A @ B] : ( C2 @ ( product_fst @ A @ B @ P4 ) @ ( product_snd @ A @ B @ P4 ) ) ) ) ).
% case_prod_unfold
thf(fact_26_case__prod__beta_H,axiom,
! [C: $tType,B: $tType,A: $tType] :
( ( product_case_prod @ A @ B @ C )
= ( ^ [F2: A > B > C,X3: product_prod @ A @ B] : ( F2 @ ( product_fst @ A @ B @ X3 ) @ ( product_snd @ A @ B @ X3 ) ) ) ) ).
% case_prod_beta'
thf(fact_27_split__comp__eq,axiom,
! [A: $tType,C: $tType,B: $tType,D: $tType,F: A > B > C,G: D > A] :
( ( ^ [U: product_prod @ D @ B] : ( F @ ( G @ ( product_fst @ D @ B @ U ) ) @ ( product_snd @ D @ B @ U ) ) )
= ( product_case_prod @ D @ B @ C
@ ^ [X3: D] : ( F @ ( G @ X3 ) ) ) ) ).
% split_comp_eq
thf(fact_28_lprefix__refl,axiom,
! [A: $tType,Xs: coinductive_llist @ A] : ( coinductive_lprefix @ A @ Xs @ Xs ) ).
% lprefix_refl
thf(fact_29_llist_Oleq__refl,axiom,
! [A: $tType,X: coinductive_llist @ A] : ( coinductive_lprefix @ A @ X @ X ) ).
% llist.leq_refl
thf(fact_30_lfilter__idem,axiom,
! [A: $tType,P: A > $o,Xs: coinductive_llist @ A] :
( ( coinductive_lfilter @ A @ P @ ( coinductive_lfilter @ A @ P @ Xs ) )
= ( coinductive_lfilter @ A @ P @ Xs ) ) ).
% lfilter_idem
thf(fact_31_swap__swap,axiom,
! [B: $tType,A: $tType,P3: product_prod @ A @ B] :
( ( product_swap @ B @ A @ ( product_swap @ A @ B @ P3 ) )
= P3 ) ).
% swap_swap
thf(fact_32_lfilter__K__True,axiom,
! [A: $tType,Xs: coinductive_llist @ A] :
( ( coinductive_lfilter @ A
@ ^ [Uu: A] : $true
@ Xs )
= Xs ) ).
% lfilter_K_True
thf(fact_33_tllist__of__llist__inject,axiom,
! [A: $tType,B: $tType,B3: B,Xs: coinductive_llist @ A,C3: B,Ys: coinductive_llist @ A] :
( ( ( tLList1672613558_llist @ B @ A @ B3 @ Xs )
= ( tLList1672613558_llist @ B @ A @ C3 @ Ys ) )
= ( ( Xs = Ys )
& ( ( coinductive_lfinite @ A @ Ys )
=> ( B3 = C3 ) ) ) ) ).
% tllist_of_llist_inject
thf(fact_34_snd__apfst,axiom,
! [B: $tType,A: $tType,C: $tType,F: C > B,X: product_prod @ C @ A] :
( ( product_snd @ B @ A @ ( product_apfst @ C @ B @ A @ F @ X ) )
= ( product_snd @ C @ A @ X ) ) ).
% snd_apfst
thf(fact_35_snd__swap,axiom,
! [B: $tType,A: $tType,X: product_prod @ A @ B] :
( ( product_snd @ B @ A @ ( product_swap @ A @ B @ X ) )
= ( product_fst @ A @ B @ X ) ) ).
% snd_swap
thf(fact_36_fst__swap,axiom,
! [A: $tType,B: $tType,X: product_prod @ B @ A] :
( ( product_fst @ A @ B @ ( product_swap @ B @ A @ X ) )
= ( product_snd @ B @ A @ X ) ) ).
% fst_swap
thf(fact_37_scomp__scomp,axiom,
! [A: $tType,C: $tType,D: $tType,B: $tType,F3: $tType,E: $tType,F: A > ( product_prod @ E @ F3 ),G: E > F3 > ( product_prod @ C @ D ),H: C > D > B] :
( ( product_scomp @ A @ C @ D @ B @ ( product_scomp @ A @ E @ F3 @ ( product_prod @ C @ D ) @ F @ G ) @ H )
= ( product_scomp @ A @ E @ F3 @ B @ F
@ ^ [X3: E] : ( product_scomp @ F3 @ C @ D @ B @ ( G @ X3 ) @ H ) ) ) ).
% scomp_scomp
thf(fact_38_lprefix__trans,axiom,
! [A: $tType,Xs: coinductive_llist @ A,Ys: coinductive_llist @ A,Zs: coinductive_llist @ A] :
( ( coinductive_lprefix @ A @ Xs @ Ys )
=> ( ( coinductive_lprefix @ A @ Ys @ Zs )
=> ( coinductive_lprefix @ A @ Xs @ Zs ) ) ) ).
% lprefix_trans
thf(fact_39_llist_Oleq__trans,axiom,
! [A: $tType,X: coinductive_llist @ A,Y4: coinductive_llist @ A,Z2: coinductive_llist @ A] :
( ( coinductive_lprefix @ A @ X @ Y4 )
=> ( ( coinductive_lprefix @ A @ Y4 @ Z2 )
=> ( coinductive_lprefix @ A @ X @ Z2 ) ) ) ).
% llist.leq_trans
thf(fact_40_lprefix__antisym,axiom,
! [A: $tType,Xs: coinductive_llist @ A,Ys: coinductive_llist @ A] :
( ( coinductive_lprefix @ A @ Xs @ Ys )
=> ( ( coinductive_lprefix @ A @ Ys @ Xs )
=> ( Xs = Ys ) ) ) ).
% lprefix_antisym
thf(fact_41_lprefix__lfilterI,axiom,
! [A: $tType,Xs: coinductive_llist @ A,Ys: coinductive_llist @ A,P: A > $o] :
( ( coinductive_lprefix @ A @ Xs @ Ys )
=> ( coinductive_lprefix @ A @ ( coinductive_lfilter @ A @ P @ Xs ) @ ( coinductive_lfilter @ A @ P @ Ys ) ) ) ).
% lprefix_lfilterI
thf(fact_42_llist_Oleq__antisym,axiom,
! [A: $tType,X: coinductive_llist @ A,Y4: coinductive_llist @ A] :
( ( coinductive_lprefix @ A @ X @ Y4 )
=> ( ( coinductive_lprefix @ A @ Y4 @ X )
=> ( X = Y4 ) ) ) ).
% llist.leq_antisym
thf(fact_43_lprefix__down__linear,axiom,
! [A: $tType,Xs: coinductive_llist @ A,Zs: coinductive_llist @ A,Ys: coinductive_llist @ A] :
( ( coinductive_lprefix @ A @ Xs @ Zs )
=> ( ( coinductive_lprefix @ A @ Ys @ Zs )
=> ( ( coinductive_lprefix @ A @ Xs @ Ys )
| ( coinductive_lprefix @ A @ Ys @ Xs ) ) ) ) ).
% lprefix_down_linear
thf(fact_44_lfilter__lfilter,axiom,
! [A: $tType,P: A > $o,Q: A > $o,Xs: coinductive_llist @ A] :
( ( coinductive_lfilter @ A @ P @ ( coinductive_lfilter @ A @ Q @ Xs ) )
= ( coinductive_lfilter @ A
@ ^ [X3: A] :
( ( P @ X3 )
& ( Q @ X3 ) )
@ Xs ) ) ).
% lfilter_lfilter
thf(fact_45_mem__Collect__eq,axiom,
! [A: $tType,A3: A,P: A > $o] :
( ( member @ A @ A3 @ ( collect @ A @ P ) )
= ( P @ A3 ) ) ).
% mem_Collect_eq
thf(fact_46_Collect__mem__eq,axiom,
! [A: $tType,A5: set @ A] :
( ( collect @ A
@ ^ [X3: A] : ( member @ A @ X3 @ A5 ) )
= A5 ) ).
% Collect_mem_eq
thf(fact_47_Collect__cong,axiom,
! [A: $tType,P: A > $o,Q: A > $o] :
( ! [X4: A] :
( ( P @ X4 )
= ( Q @ X4 ) )
=> ( ( collect @ A @ P )
= ( collect @ A @ Q ) ) ) ).
% Collect_cong
thf(fact_48_ext,axiom,
! [B: $tType,A: $tType,F: A > B,G: A > B] :
( ! [X4: A] :
( ( F @ X4 )
= ( G @ X4 ) )
=> ( F = G ) ) ).
% ext
thf(fact_49_llist_Orel__reflp,axiom,
! [A: $tType,R2: A > A > $o] :
( ( reflp @ A @ R2 )
=> ( reflp @ ( coinductive_llist @ A ) @ ( coindu1486289336t_all2 @ A @ A @ R2 ) ) ) ).
% llist.rel_reflp
thf(fact_50_tllist_Oabs__induct,axiom,
! [B: $tType,A: $tType,P: ( tLList446370796tllist @ A @ B ) > $o,X: tLList446370796tllist @ A @ B] :
( ! [Y3: product_prod @ ( coinductive_llist @ A ) @ B] :
( P
@ ( product_case_prod @ ( coinductive_llist @ A ) @ B @ ( tLList446370796tllist @ A @ B )
@ ^ [Xs3: coinductive_llist @ A,A2: B] : ( tLList1672613558_llist @ B @ A @ A2 @ Xs3 )
@ Y3 ) )
=> ( P @ X ) ) ).
% tllist.abs_induct
thf(fact_51_scomp__unfold,axiom,
! [D: $tType,C: $tType,B: $tType,A: $tType] :
( ( product_scomp @ A @ B @ C @ D )
= ( ^ [F2: A > ( product_prod @ B @ C ),G2: B > C > D,X3: A] : ( G2 @ ( product_fst @ B @ C @ ( F2 @ X3 ) ) @ ( product_snd @ B @ C @ ( F2 @ X3 ) ) ) ) ) ).
% scomp_unfold
thf(fact_52_prod__eqI,axiom,
! [B: $tType,A: $tType,P3: product_prod @ A @ B,Q2: product_prod @ A @ B] :
( ( ( product_fst @ A @ B @ P3 )
= ( product_fst @ A @ B @ Q2 ) )
=> ( ( ( product_snd @ A @ B @ P3 )
= ( product_snd @ A @ B @ Q2 ) )
=> ( P3 = Q2 ) ) ) ).
% prod_eqI
thf(fact_53_prod_Oexpand,axiom,
! [B: $tType,A: $tType,Prod: product_prod @ A @ B,Prod2: product_prod @ A @ B] :
( ( ( ( product_fst @ A @ B @ Prod )
= ( product_fst @ A @ B @ Prod2 ) )
& ( ( product_snd @ A @ B @ Prod )
= ( product_snd @ A @ B @ Prod2 ) ) )
=> ( Prod = Prod2 ) ) ).
% prod.expand
thf(fact_54_prod__eq__iff,axiom,
! [B: $tType,A: $tType] :
( ( ^ [Y2: product_prod @ A @ B,Z: product_prod @ A @ B] : ( Y2 = Z ) )
= ( ^ [S2: product_prod @ A @ B,T2: product_prod @ A @ B] :
( ( ( product_fst @ A @ B @ S2 )
= ( product_fst @ A @ B @ T2 ) )
& ( ( product_snd @ A @ B @ S2 )
= ( product_snd @ A @ B @ T2 ) ) ) ) ) ).
% prod_eq_iff
thf(fact_55_lfinite__lfilterI,axiom,
! [A: $tType,Xs: coinductive_llist @ A,P: A > $o] :
( ( coinductive_lfinite @ A @ Xs )
=> ( coinductive_lfinite @ A @ ( coinductive_lfilter @ A @ P @ Xs ) ) ) ).
% lfinite_lfilterI
thf(fact_56_llist__all2__lfilterI,axiom,
! [A: $tType,B: $tType,P: A > B > $o,Xs: coinductive_llist @ A,Ys: coinductive_llist @ B,Q1: A > $o,Q22: B > $o] :
( ( coindu1486289336t_all2 @ A @ B @ P @ Xs @ Ys )
=> ( ! [X4: A,Y3: B] :
( ( P @ X4 @ Y3 )
=> ( ( Q1 @ X4 )
= ( Q22 @ Y3 ) ) )
=> ( coindu1486289336t_all2 @ A @ B @ P @ ( coinductive_lfilter @ A @ Q1 @ Xs ) @ ( coinductive_lfilter @ B @ Q22 @ Ys ) ) ) ) ).
% llist_all2_lfilterI
thf(fact_57_lprefix__lfiniteD,axiom,
! [A: $tType,Xs: coinductive_llist @ A,Ys: coinductive_llist @ A] :
( ( coinductive_lprefix @ A @ Xs @ Ys )
=> ( ( coinductive_lfinite @ A @ Ys )
=> ( coinductive_lfinite @ A @ Xs ) ) ) ).
% lprefix_lfiniteD
thf(fact_58_not__lfinite__lprefix__conv__eq,axiom,
! [A: $tType,Xs: coinductive_llist @ A,Ys: coinductive_llist @ A] :
( ~ ( coinductive_lfinite @ A @ Xs )
=> ( ( coinductive_lprefix @ A @ Xs @ Ys )
= ( Xs = Ys ) ) ) ).
% not_lfinite_lprefix_conv_eq
thf(fact_59_lprefix__lappend,axiom,
! [A: $tType,Xs: coinductive_llist @ A,Ys: coinductive_llist @ A] : ( coinductive_lprefix @ A @ Xs @ ( coinductive_lappend @ A @ Xs @ Ys ) ) ).
% lprefix_lappend
thf(fact_60_lappend__lprefixE,axiom,
! [A: $tType,Xs: coinductive_llist @ A,Ys: coinductive_llist @ A,Zs: coinductive_llist @ A] :
( ( coinductive_lprefix @ A @ ( coinductive_lappend @ A @ Xs @ Ys ) @ Zs )
=> ~ ! [Zs2: coinductive_llist @ A] :
( Zs
!= ( coinductive_lappend @ A @ Xs @ Zs2 ) ) ) ).
% lappend_lprefixE
thf(fact_61_lprefix__lappendD,axiom,
! [A: $tType,Xs: coinductive_llist @ A,Ys: coinductive_llist @ A,Zs: coinductive_llist @ A] :
( ( coinductive_lprefix @ A @ Xs @ ( coinductive_lappend @ A @ Ys @ Zs ) )
=> ( ( coinductive_lprefix @ A @ Xs @ Ys )
| ( coinductive_lprefix @ A @ Ys @ Xs ) ) ) ).
% lprefix_lappendD
thf(fact_62_lprefix__conv__lappend,axiom,
! [A: $tType] :
( ( coinductive_lprefix @ A )
= ( ^ [Xs3: coinductive_llist @ A,Ys3: coinductive_llist @ A] :
? [Zs3: coinductive_llist @ A] :
( Ys3
= ( coinductive_lappend @ A @ Xs3 @ Zs3 ) ) ) ) ).
% lprefix_conv_lappend
thf(fact_63_lprefix__lappend__sameI,axiom,
! [A: $tType,Xs: coinductive_llist @ A,Ys: coinductive_llist @ A,Zs: coinductive_llist @ A] :
( ( coinductive_lprefix @ A @ Xs @ Ys )
=> ( coinductive_lprefix @ A @ ( coinductive_lappend @ A @ Zs @ Xs ) @ ( coinductive_lappend @ A @ Zs @ Ys ) ) ) ).
% lprefix_lappend_sameI
thf(fact_64_tllist__of__llist__cong,axiom,
! [B: $tType,A: $tType,Xs: coinductive_llist @ A,Xs2: coinductive_llist @ A,B3: B,B5: B] :
( ( Xs = Xs2 )
=> ( ( ( coinductive_lfinite @ A @ Xs2 )
=> ( B3 = B5 ) )
=> ( ( tLList1672613558_llist @ B @ A @ B3 @ Xs )
= ( tLList1672613558_llist @ B @ A @ B5 @ Xs2 ) ) ) ) ).
% tllist_of_llist_cong
thf(fact_65_snd__def,axiom,
! [B: $tType,A: $tType] :
( ( product_snd @ A @ B )
= ( product_case_prod @ A @ B @ B
@ ^ [X1: A,X2: B] : X2 ) ) ).
% snd_def
thf(fact_66_scomp__def,axiom,
! [D: $tType,C: $tType,B: $tType,A: $tType] :
( ( product_scomp @ A @ B @ C @ D )
= ( ^ [F2: A > ( product_prod @ B @ C ),G2: B > C > D,X3: A] : ( product_case_prod @ B @ C @ D @ G2 @ ( F2 @ X3 ) ) ) ) ).
% scomp_def
thf(fact_67_case__prod__beta,axiom,
! [A: $tType,C: $tType,B: $tType] :
( ( product_case_prod @ B @ C @ A )
= ( ^ [F2: B > C > A,P4: product_prod @ B @ C] : ( F2 @ ( product_fst @ B @ C @ P4 ) @ ( product_snd @ B @ C @ P4 ) ) ) ) ).
% case_prod_beta
thf(fact_68_prod_Ocase__eq__if,axiom,
! [C: $tType,B: $tType,A: $tType] :
( ( product_case_prod @ A @ B @ C )
= ( ^ [F2: A > B > C,Prod3: product_prod @ A @ B] : ( F2 @ ( product_fst @ A @ B @ Prod3 ) @ ( product_snd @ A @ B @ Prod3 ) ) ) ) ).
% prod.case_eq_if
thf(fact_69_Product__Type_OCollect__case__prodD,axiom,
! [B: $tType,A: $tType,X: product_prod @ A @ B,A5: A > B > $o] :
( ( member @ ( product_prod @ A @ B ) @ X @ ( collect @ ( product_prod @ A @ B ) @ ( product_case_prod @ A @ B @ $o @ A5 ) ) )
=> ( A5 @ ( product_fst @ A @ B @ X ) @ ( product_snd @ A @ B @ X ) ) ) ).
% Product_Type.Collect_case_prodD
thf(fact_70_lfilter__eq__lappend__lfiniteD,axiom,
! [A: $tType,P: A > $o,Xs: coinductive_llist @ A,Ys: coinductive_llist @ A,Zs: coinductive_llist @ A] :
( ( ( coinductive_lfilter @ A @ P @ Xs )
= ( coinductive_lappend @ A @ Ys @ Zs ) )
=> ( ( coinductive_lfinite @ A @ Ys )
=> ? [Us: coinductive_llist @ A,Vs: coinductive_llist @ A] :
( ( Xs
= ( coinductive_lappend @ A @ Us @ Vs ) )
& ( coinductive_lfinite @ A @ Us )
& ( Ys
= ( coinductive_lfilter @ A @ P @ Us ) )
& ( Zs
= ( coinductive_lfilter @ A @ P @ Vs ) ) ) ) ) ).
% lfilter_eq_lappend_lfiniteD
thf(fact_71_exE__realizer,axiom,
! [C: $tType,A: $tType,B: $tType,P: A > B > $o,P3: product_prod @ B @ A,Q: C > $o,F: B > A > C] :
( ( P @ ( product_snd @ B @ A @ P3 ) @ ( product_fst @ B @ A @ P3 ) )
=> ( ! [X4: B,Y3: A] :
( ( P @ Y3 @ X4 )
=> ( Q @ ( F @ X4 @ Y3 ) ) )
=> ( Q @ ( product_case_prod @ B @ A @ C @ F @ P3 ) ) ) ) ).
% exE_realizer
thf(fact_72_lappendt_Oabs__eq,axiom,
! [B: $tType,A: $tType,Xa: coinductive_llist @ A,X: product_prod @ ( coinductive_llist @ A ) @ B] :
( ( tLList98099029ppendt @ A @ B @ Xa
@ ( product_case_prod @ ( coinductive_llist @ A ) @ B @ ( tLList446370796tllist @ A @ B )
@ ^ [Xs3: coinductive_llist @ A,A2: B] : ( tLList1672613558_llist @ B @ A @ A2 @ Xs3 )
@ X ) )
= ( product_case_prod @ ( coinductive_llist @ A ) @ B @ ( tLList446370796tllist @ A @ B )
@ ^ [Xs3: coinductive_llist @ A,A2: B] : ( tLList1672613558_llist @ B @ A @ A2 @ Xs3 )
@ ( product_apfst @ ( coinductive_llist @ A ) @ ( coinductive_llist @ A ) @ B @ ( coinductive_lappend @ A @ Xa ) @ X ) ) ) ).
% lappendt.abs_eq
thf(fact_73_exE__realizer_H,axiom,
! [A: $tType,B: $tType,P: A > B > $o,P3: product_prod @ B @ A] :
( ( P @ ( product_snd @ B @ A @ P3 ) @ ( product_fst @ B @ A @ P3 ) )
=> ~ ! [X4: B,Y3: A] :
~ ( P @ Y3 @ X4 ) ) ).
% exE_realizer'
thf(fact_74_tllist__of__llist__eq__lappendt__conv,axiom,
! [B: $tType,A: $tType,A3: B,Xs: coinductive_llist @ A,Ys: coinductive_llist @ A,Zs: tLList446370796tllist @ A @ B] :
( ( ( tLList1672613558_llist @ B @ A @ A3 @ Xs )
= ( tLList98099029ppendt @ A @ B @ Ys @ Zs ) )
= ( ? [Xs4: coinductive_llist @ A,A6: B] :
( ( Xs
= ( coinductive_lappend @ A @ Ys @ Xs4 ) )
& ( Zs
= ( tLList1672613558_llist @ B @ A @ A6 @ Xs4 ) )
& ( ( coinductive_lfinite @ A @ Ys )
=> ( A3 = A6 ) ) ) ) ) ).
% tllist_of_llist_eq_lappendt_conv
thf(fact_75_Coinductive__List_Olprefix__nitpick__simps,axiom,
! [A: $tType] :
( ( coinductive_lprefix @ A )
= ( ^ [Xs3: coinductive_llist @ A,Ys3: coinductive_llist @ A] :
( ( ( coinductive_lfinite @ A @ Xs3 )
=> ( coindu328551480prefix @ A @ Xs3 @ Ys3 ) )
& ( ~ ( coinductive_lfinite @ A @ Xs3 )
=> ( Xs3 = Ys3 ) ) ) ) ) ).
% Coinductive_List.lprefix_nitpick_simps
thf(fact_76_cr__tllist__def,axiom,
! [B: $tType,A: $tType] :
( ( tLList47617868tllist @ A @ B )
= ( product_case_prod @ ( coinductive_llist @ A ) @ B @ ( ( tLList446370796tllist @ A @ B ) > $o )
@ ^ [Xs3: coinductive_llist @ A,B2: B] :
( ^ [Y2: tLList446370796tllist @ A @ B,Z: tLList446370796tllist @ A @ B] : ( Y2 = Z )
@ ( tLList1672613558_llist @ B @ A @ B2 @ Xs3 ) ) ) ) ).
% cr_tllist_def
thf(fact_77_llast__lappend,axiom,
! [A: $tType,Ys: coinductive_llist @ A,Xs: coinductive_llist @ A] :
( ( ( coinductive_lnull @ A @ Ys )
=> ( ( coinductive_llast @ A @ ( coinductive_lappend @ A @ Xs @ Ys ) )
= ( coinductive_llast @ A @ Xs ) ) )
& ( ~ ( coinductive_lnull @ A @ Ys )
=> ( ( ( coinductive_lfinite @ A @ Xs )
=> ( ( coinductive_llast @ A @ ( coinductive_lappend @ A @ Xs @ Ys ) )
= ( coinductive_llast @ A @ Ys ) ) )
& ( ~ ( coinductive_lfinite @ A @ Xs )
=> ( ( coinductive_llast @ A @ ( coinductive_lappend @ A @ Xs @ Ys ) )
= ( undefined @ A ) ) ) ) ) ) ).
% llast_lappend
thf(fact_78_llast__lappend__LCons,axiom,
! [A: $tType,Xs: coinductive_llist @ A,Y4: A,Ys: coinductive_llist @ A] :
( ( coinductive_lfinite @ A @ Xs )
=> ( ( coinductive_llast @ A @ ( coinductive_lappend @ A @ Xs @ ( coinductive_LCons @ A @ Y4 @ Ys ) ) )
= ( coinductive_llast @ A @ ( coinductive_LCons @ A @ Y4 @ Ys ) ) ) ) ).
% llast_lappend_LCons
thf(fact_79_DEADID_Orel__reflp,axiom,
! [A: $tType] :
( reflp @ A
@ ^ [Y2: A,Z: A] : ( Y2 = Z ) ) ).
% DEADID.rel_reflp
thf(fact_80_llist_Oinject,axiom,
! [A: $tType,X21: A,X22: coinductive_llist @ A,Y21: A,Y22: coinductive_llist @ A] :
( ( ( coinductive_LCons @ A @ X21 @ X22 )
= ( coinductive_LCons @ A @ Y21 @ Y22 ) )
= ( ( X21 = Y21 )
& ( X22 = Y22 ) ) ) ).
% llist.inject
thf(fact_81_LCons__lprefix__LCons,axiom,
! [A: $tType,X: A,Xs: coinductive_llist @ A,Y4: A,Ys: coinductive_llist @ A] :
( ( coinductive_lprefix @ A @ ( coinductive_LCons @ A @ X @ Xs ) @ ( coinductive_LCons @ A @ Y4 @ Ys ) )
= ( ( X = Y4 )
& ( coinductive_lprefix @ A @ Xs @ Ys ) ) ) ).
% LCons_lprefix_LCons
thf(fact_82_lfinite__LCons,axiom,
! [A: $tType,X: A,Xs: coinductive_llist @ A] :
( ( coinductive_lfinite @ A @ ( coinductive_LCons @ A @ X @ Xs ) )
= ( coinductive_lfinite @ A @ Xs ) ) ).
% lfinite_LCons
thf(fact_83_lfinite__code_I2_J,axiom,
! [B: $tType,X: B,Xs: coinductive_llist @ B] :
( ( coinductive_lfinite @ B @ ( coinductive_LCons @ B @ X @ Xs ) )
= ( coinductive_lfinite @ B @ Xs ) ) ).
% lfinite_code(2)
thf(fact_84_llist__all2__LCons__LCons,axiom,
! [A: $tType,B: $tType,R2: A > B > $o,X21: A,X22: coinductive_llist @ A,Y21: B,Y22: coinductive_llist @ B] :
( ( coindu1486289336t_all2 @ A @ B @ R2 @ ( coinductive_LCons @ A @ X21 @ X22 ) @ ( coinductive_LCons @ B @ Y21 @ Y22 ) )
= ( ( R2 @ X21 @ Y21 )
& ( coindu1486289336t_all2 @ A @ B @ R2 @ X22 @ Y22 ) ) ) ).
% llist_all2_LCons_LCons
thf(fact_85_lappend__code_I2_J,axiom,
! [A: $tType,Xa: A,X: coinductive_llist @ A,Ys: coinductive_llist @ A] :
( ( coinductive_lappend @ A @ ( coinductive_LCons @ A @ Xa @ X ) @ Ys )
= ( coinductive_LCons @ A @ Xa @ ( coinductive_lappend @ A @ X @ Ys ) ) ) ).
% lappend_code(2)
thf(fact_86_lnull__lappend,axiom,
! [A: $tType,Xs: coinductive_llist @ A,Ys: coinductive_llist @ A] :
( ( coinductive_lnull @ A @ ( coinductive_lappend @ A @ Xs @ Ys ) )
= ( ( coinductive_lnull @ A @ Xs )
& ( coinductive_lnull @ A @ Ys ) ) ) ).
% lnull_lappend
thf(fact_87_lappend_Odisc__iff_I2_J,axiom,
! [A: $tType,Xs: coinductive_llist @ A,Ys: coinductive_llist @ A] :
( ( ~ ( coinductive_lnull @ A @ ( coinductive_lappend @ A @ Xs @ Ys ) ) )
= ( ~ ( coinductive_lnull @ A @ Xs )
| ~ ( coinductive_lnull @ A @ Ys ) ) ) ).
% lappend.disc_iff(2)
thf(fact_88_lfilter__LCons,axiom,
! [A: $tType,P: A > $o,X: A,Xs: coinductive_llist @ A] :
( ( ( P @ X )
=> ( ( coinductive_lfilter @ A @ P @ ( coinductive_LCons @ A @ X @ Xs ) )
= ( coinductive_LCons @ A @ X @ ( coinductive_lfilter @ A @ P @ Xs ) ) ) )
& ( ~ ( P @ X )
=> ( ( coinductive_lfilter @ A @ P @ ( coinductive_LCons @ A @ X @ Xs ) )
= ( coinductive_lfilter @ A @ P @ Xs ) ) ) ) ).
% lfilter_LCons
thf(fact_89_llast__LCons2,axiom,
! [A: $tType,X: A,Y4: A,Xs: coinductive_llist @ A] :
( ( coinductive_llast @ A @ ( coinductive_LCons @ A @ X @ ( coinductive_LCons @ A @ Y4 @ Xs ) ) )
= ( coinductive_llast @ A @ ( coinductive_LCons @ A @ Y4 @ Xs ) ) ) ).
% llast_LCons2
thf(fact_90_lappend_Oexhaust,axiom,
! [A: $tType,Xs: coinductive_llist @ A,Ys: coinductive_llist @ A] :
( ( ( coinductive_lnull @ A @ Xs )
=> ~ ( coinductive_lnull @ A @ Ys ) )
=> ( ~ ( coinductive_lnull @ A @ Xs )
| ~ ( coinductive_lnull @ A @ Ys ) ) ) ).
% lappend.exhaust
thf(fact_91_not__lnull__conv,axiom,
! [A: $tType,Xs: coinductive_llist @ A] :
( ( ~ ( coinductive_lnull @ A @ Xs ) )
= ( ? [X3: A,Xs4: coinductive_llist @ A] :
( Xs
= ( coinductive_LCons @ A @ X3 @ Xs4 ) ) ) ) ).
% not_lnull_conv
thf(fact_92_lzip_Oexhaust,axiom,
! [A: $tType,B: $tType,Xs: coinductive_llist @ A,Ys: coinductive_llist @ B] :
( ~ ( ( coinductive_lnull @ A @ Xs )
| ( coinductive_lnull @ B @ Ys ) )
=> ~ ( ~ ( coinductive_lnull @ A @ Xs )
=> ( coinductive_lnull @ B @ Ys ) ) ) ).
% lzip.exhaust
thf(fact_93_llist_OdiscI_I2_J,axiom,
! [A: $tType,Llist: coinductive_llist @ A,X21: A,X22: coinductive_llist @ A] :
( ( Llist
= ( coinductive_LCons @ A @ X21 @ X22 ) )
=> ~ ( coinductive_lnull @ A @ Llist ) ) ).
% llist.discI(2)
thf(fact_94_llist_Odisc_I2_J,axiom,
! [A: $tType,X21: A,X22: coinductive_llist @ A] :
~ ( coinductive_lnull @ A @ ( coinductive_LCons @ A @ X21 @ X22 ) ) ).
% llist.disc(2)
thf(fact_95_llast__LCons,axiom,
! [A: $tType,Xs: coinductive_llist @ A,X: A] :
( ( ( coinductive_lnull @ A @ Xs )
=> ( ( coinductive_llast @ A @ ( coinductive_LCons @ A @ X @ Xs ) )
= X ) )
& ( ~ ( coinductive_lnull @ A @ Xs )
=> ( ( coinductive_llast @ A @ ( coinductive_LCons @ A @ X @ Xs ) )
= ( coinductive_llast @ A @ Xs ) ) ) ) ).
% llast_LCons
thf(fact_96_lprefix__not__lnullD,axiom,
! [A: $tType,Xs: coinductive_llist @ A,Ys: coinductive_llist @ A] :
( ( coinductive_lprefix @ A @ Xs @ Ys )
=> ( ~ ( coinductive_lnull @ A @ Xs )
=> ~ ( coinductive_lnull @ A @ Ys ) ) ) ).
% lprefix_not_lnullD
thf(fact_97_lprefix__lnullD,axiom,
! [A: $tType,Xs: coinductive_llist @ A,Ys: coinductive_llist @ A] :
( ( coinductive_lprefix @ A @ Xs @ Ys )
=> ( ( coinductive_lnull @ A @ Ys )
=> ( coinductive_lnull @ A @ Xs ) ) ) ).
% lprefix_lnullD
thf(fact_98_lprefix__lnull,axiom,
! [A: $tType,Ys: coinductive_llist @ A,Xs: coinductive_llist @ A] :
( ( coinductive_lnull @ A @ Ys )
=> ( ( coinductive_lprefix @ A @ Xs @ Ys )
= ( coinductive_lnull @ A @ Xs ) ) ) ).
% lprefix_lnull
thf(fact_99_lnull__lprefix,axiom,
! [A: $tType,Xs: coinductive_llist @ A,Ys: coinductive_llist @ A] :
( ( coinductive_lnull @ A @ Xs )
=> ( coinductive_lprefix @ A @ Xs @ Ys ) ) ).
% lnull_lprefix
thf(fact_100_LCons__lprefix__conv,axiom,
! [A: $tType,X: A,Xs: coinductive_llist @ A,Ys: coinductive_llist @ A] :
( ( coinductive_lprefix @ A @ ( coinductive_LCons @ A @ X @ Xs ) @ Ys )
= ( ? [Ys4: coinductive_llist @ A] :
( ( Ys
= ( coinductive_LCons @ A @ X @ Ys4 ) )
& ( coinductive_lprefix @ A @ Xs @ Ys4 ) ) ) ) ).
% LCons_lprefix_conv
thf(fact_101_Le__LCons,axiom,
! [A: $tType,Xs: coinductive_llist @ A,Ys: coinductive_llist @ A,X: A] :
( ( coinductive_lprefix @ A @ Xs @ Ys )
=> ( coinductive_lprefix @ A @ ( coinductive_LCons @ A @ X @ Xs ) @ ( coinductive_LCons @ A @ X @ Ys ) ) ) ).
% Le_LCons
thf(fact_102_lnull__imp__lfinite,axiom,
! [A: $tType,Xs: coinductive_llist @ A] :
( ( coinductive_lnull @ A @ Xs )
=> ( coinductive_lfinite @ A @ Xs ) ) ).
% lnull_imp_lfinite
thf(fact_103_llist__all2__lnullD,axiom,
! [A: $tType,B: $tType,P: A > B > $o,Xs: coinductive_llist @ A,Ys: coinductive_llist @ B] :
( ( coindu1486289336t_all2 @ A @ B @ P @ Xs @ Ys )
=> ( ( coinductive_lnull @ A @ Xs )
= ( coinductive_lnull @ B @ Ys ) ) ) ).
% llist_all2_lnullD
thf(fact_104_lfinite__LConsI,axiom,
! [A: $tType,Xs: coinductive_llist @ A,X: A] :
( ( coinductive_lfinite @ A @ Xs )
=> ( coinductive_lfinite @ A @ ( coinductive_LCons @ A @ X @ Xs ) ) ) ).
% lfinite_LConsI
thf(fact_105_llist__all2__LCons2,axiom,
! [B: $tType,A: $tType,P: A > B > $o,Xs: coinductive_llist @ A,Y4: B,Ys: coinductive_llist @ B] :
( ( coindu1486289336t_all2 @ A @ B @ P @ Xs @ ( coinductive_LCons @ B @ Y4 @ Ys ) )
= ( ? [X3: A,Xs4: coinductive_llist @ A] :
( ( Xs
= ( coinductive_LCons @ A @ X3 @ Xs4 ) )
& ( P @ X3 @ Y4 )
& ( coindu1486289336t_all2 @ A @ B @ P @ Xs4 @ Ys ) ) ) ) ).
% llist_all2_LCons2
thf(fact_106_llist__all2__LCons1,axiom,
! [A: $tType,B: $tType,P: A > B > $o,X: A,Xs: coinductive_llist @ A,Ys: coinductive_llist @ B] :
( ( coindu1486289336t_all2 @ A @ B @ P @ ( coinductive_LCons @ A @ X @ Xs ) @ Ys )
= ( ? [Y: B,Ys4: coinductive_llist @ B] :
( ( Ys
= ( coinductive_LCons @ B @ Y @ Ys4 ) )
& ( P @ X @ Y )
& ( coindu1486289336t_all2 @ A @ B @ P @ Xs @ Ys4 ) ) ) ) ).
% llist_all2_LCons1
thf(fact_107_llist_Orel__intros_I2_J,axiom,
! [A: $tType,B: $tType,R2: A > B > $o,X21: A,Y21: B,X22: coinductive_llist @ A,Y22: coinductive_llist @ B] :
( ( R2 @ X21 @ Y21 )
=> ( ( coindu1486289336t_all2 @ A @ B @ R2 @ X22 @ Y22 )
=> ( coindu1486289336t_all2 @ A @ B @ R2 @ ( coinductive_LCons @ A @ X21 @ X22 ) @ ( coinductive_LCons @ B @ Y21 @ Y22 ) ) ) ) ).
% llist.rel_intros(2)
thf(fact_108_lappend__lnull2,axiom,
! [A: $tType,Ys: coinductive_llist @ A,Xs: coinductive_llist @ A] :
( ( coinductive_lnull @ A @ Ys )
=> ( ( coinductive_lappend @ A @ Xs @ Ys )
= Xs ) ) ).
% lappend_lnull2
thf(fact_109_lappend__lnull1,axiom,
! [A: $tType,Xs: coinductive_llist @ A,Ys: coinductive_llist @ A] :
( ( coinductive_lnull @ A @ Xs )
=> ( ( coinductive_lappend @ A @ Xs @ Ys )
= Ys ) ) ).
% lappend_lnull1
thf(fact_110_lappend_Odisc_I1_J,axiom,
! [A: $tType,Xs: coinductive_llist @ A,Ys: coinductive_llist @ A] :
( ( coinductive_lnull @ A @ Xs )
=> ( ( coinductive_lnull @ A @ Ys )
=> ( coinductive_lnull @ A @ ( coinductive_lappend @ A @ Xs @ Ys ) ) ) ) ).
% lappend.disc(1)
thf(fact_111_lappend_Odisc_I2_J,axiom,
! [A: $tType,Xs: coinductive_llist @ A,Ys: coinductive_llist @ A] :
( ( ~ ( coinductive_lnull @ A @ Xs )
| ~ ( coinductive_lnull @ A @ Ys ) )
=> ~ ( coinductive_lnull @ A @ ( coinductive_lappend @ A @ Xs @ Ys ) ) ) ).
% lappend.disc(2)
thf(fact_112_lfilter__LCons__found,axiom,
! [A: $tType,P: A > $o,X: A,Xs: coinductive_llist @ A] :
( ( P @ X )
=> ( ( coinductive_lfilter @ A @ P @ ( coinductive_LCons @ A @ X @ Xs ) )
= ( coinductive_LCons @ A @ X @ ( coinductive_lfilter @ A @ P @ Xs ) ) ) ) ).
% lfilter_LCons_found
thf(fact_113_lfilter__LCons__seek,axiom,
! [A: $tType,P3: A > $o,X: A,L2: coinductive_llist @ A] :
( ~ ( P3 @ X )
=> ( ( coinductive_lfilter @ A @ P3 @ ( coinductive_LCons @ A @ X @ L2 ) )
= ( coinductive_lfilter @ A @ P3 @ L2 ) ) ) ).
% lfilter_LCons_seek
thf(fact_114_Coinductive__List_Ofinite__lprefix__def,axiom,
! [A: $tType] :
( ( coindu328551480prefix @ A )
= ( coinductive_lprefix @ A ) ) ).
% Coinductive_List.finite_lprefix_def
thf(fact_115_lstrict__prefix__lappend__conv,axiom,
! [A: $tType,Xs: coinductive_llist @ A,Ys: coinductive_llist @ A] :
( ( coindu1478340336prefix @ A @ Xs @ ( coinductive_lappend @ A @ Xs @ Ys ) )
= ( ( coinductive_lfinite @ A @ Xs )
& ~ ( coinductive_lnull @ A @ Ys ) ) ) ).
% lstrict_prefix_lappend_conv
thf(fact_116_lfilter__eq__LConsD,axiom,
! [A: $tType,P: A > $o,Ys: coinductive_llist @ A,X: A,Xs: coinductive_llist @ A] :
( ( ( coinductive_lfilter @ A @ P @ Ys )
= ( coinductive_LCons @ A @ X @ Xs ) )
=> ? [Us: coinductive_llist @ A,Vs: coinductive_llist @ A] :
( ( Ys
= ( coinductive_lappend @ A @ Us @ ( coinductive_LCons @ A @ X @ Vs ) ) )
& ( coinductive_lfinite @ A @ Us )
& ! [X5: A] :
( ( member @ A @ X5 @ ( coinductive_lset @ A @ Us ) )
=> ~ ( P @ X5 ) )
& ( P @ X )
& ( Xs
= ( coinductive_lfilter @ A @ P @ Vs ) ) ) ) ).
% lfilter_eq_LConsD
thf(fact_117_reflpD,axiom,
! [A: $tType,R3: A > A > $o,X: A] :
( ( reflp @ A @ R3 )
=> ( R3 @ X @ X ) ) ).
% reflpD
thf(fact_118_reflpE,axiom,
! [A: $tType,R3: A > A > $o,X: A] :
( ( reflp @ A @ R3 )
=> ( R3 @ X @ X ) ) ).
% reflpE
thf(fact_119_reflpI,axiom,
! [A: $tType,R3: A > A > $o] :
( ! [X4: A] : ( R3 @ X4 @ X4 )
=> ( reflp @ A @ R3 ) ) ).
% reflpI
thf(fact_120_reflp__def,axiom,
! [A: $tType] :
( ( reflp @ A )
= ( ^ [R: A > A > $o] :
! [X3: A] : ( R @ X3 @ X3 ) ) ) ).
% reflp_def
thf(fact_121_llist__all2__same,axiom,
! [A: $tType,P: A > A > $o,Xs: coinductive_llist @ A] :
( ( coindu1486289336t_all2 @ A @ A @ P @ Xs @ Xs )
= ( ! [X3: A] :
( ( member @ A @ X3 @ ( coinductive_lset @ A @ Xs ) )
=> ( P @ X3 @ X3 ) ) ) ) ).
% llist_all2_same
thf(fact_122_lstrict__prefix__code_I4_J,axiom,
! [B: $tType,X: B,Xs: coinductive_llist @ B,Y4: B,Ys: coinductive_llist @ B] :
( ( coindu1478340336prefix @ B @ ( coinductive_LCons @ B @ X @ Xs ) @ ( coinductive_LCons @ B @ Y4 @ Ys ) )
= ( ( X = Y4 )
& ( coindu1478340336prefix @ B @ Xs @ Ys ) ) ) ).
% lstrict_prefix_code(4)
thf(fact_123_lset__lfilter,axiom,
! [A: $tType,P: A > $o,Xs: coinductive_llist @ A] :
( ( coinductive_lset @ A @ ( coinductive_lfilter @ A @ P @ Xs ) )
= ( collect @ A
@ ^ [X3: A] :
( ( member @ A @ X3 @ ( coinductive_lset @ A @ Xs ) )
& ( P @ X3 ) ) ) ) ).
% lset_lfilter
thf(fact_124_lnull__lfilter,axiom,
! [A: $tType,P: A > $o,Xs: coinductive_llist @ A] :
( ( coinductive_lnull @ A @ ( coinductive_lfilter @ A @ P @ Xs ) )
= ( ! [X3: A] :
( ( member @ A @ X3 @ ( coinductive_lset @ A @ Xs ) )
=> ~ ( P @ X3 ) ) ) ) ).
% lnull_lfilter
thf(fact_125_llist__less__induct,axiom,
! [A: $tType,P: ( coinductive_llist @ A ) > $o,Xs: coinductive_llist @ A] :
( ! [Xs5: coinductive_llist @ A] :
( ! [Ys5: coinductive_llist @ A] :
( ( coindu1478340336prefix @ A @ Ys5 @ Xs5 )
=> ( P @ Ys5 ) )
=> ( P @ Xs5 ) )
=> ( P @ Xs ) ) ).
% llist_less_induct
thf(fact_126_lset__intros_I2_J,axiom,
! [A: $tType,X: A,Xs: coinductive_llist @ A,X6: A] :
( ( member @ A @ X @ ( coinductive_lset @ A @ Xs ) )
=> ( member @ A @ X @ ( coinductive_lset @ A @ ( coinductive_LCons @ A @ X6 @ Xs ) ) ) ) ).
% lset_intros(2)
thf(fact_127_lset__intros_I1_J,axiom,
! [A: $tType,X: A,Xs: coinductive_llist @ A] : ( member @ A @ X @ ( coinductive_lset @ A @ ( coinductive_LCons @ A @ X @ Xs ) ) ) ).
% lset_intros(1)
thf(fact_128_llist_Oset__intros_I2_J,axiom,
! [A: $tType,X: A,A22: coinductive_llist @ A,A1: A] :
( ( member @ A @ X @ ( coinductive_lset @ A @ A22 ) )
=> ( member @ A @ X @ ( coinductive_lset @ A @ ( coinductive_LCons @ A @ A1 @ A22 ) ) ) ) ).
% llist.set_intros(2)
thf(fact_129_llist_Oset__intros_I1_J,axiom,
! [A: $tType,A1: A,A22: coinductive_llist @ A] : ( member @ A @ A1 @ ( coinductive_lset @ A @ ( coinductive_LCons @ A @ A1 @ A22 ) ) ) ).
% llist.set_intros(1)
thf(fact_130_lset__cases,axiom,
! [A: $tType,X: A,Xs: coinductive_llist @ A] :
( ( member @ A @ X @ ( coinductive_lset @ A @ Xs ) )
=> ( ! [Xs6: coinductive_llist @ A] :
( Xs
!= ( coinductive_LCons @ A @ X @ Xs6 ) )
=> ~ ! [X7: A,Xs6: coinductive_llist @ A] :
( ( Xs
= ( coinductive_LCons @ A @ X7 @ Xs6 ) )
=> ~ ( member @ A @ X @ ( coinductive_lset @ A @ Xs6 ) ) ) ) ) ).
% lset_cases
thf(fact_131_lset__induct,axiom,
! [A: $tType,X: A,Xs: coinductive_llist @ A,P: ( coinductive_llist @ A ) > $o] :
( ( member @ A @ X @ ( coinductive_lset @ A @ Xs ) )
=> ( ! [Xs5: coinductive_llist @ A] : ( P @ ( coinductive_LCons @ A @ X @ Xs5 ) )
=> ( ! [X7: A,Xs5: coinductive_llist @ A] :
( ( member @ A @ X @ ( coinductive_lset @ A @ Xs5 ) )
=> ( ( X != X7 )
=> ( ( P @ Xs5 )
=> ( P @ ( coinductive_LCons @ A @ X7 @ Xs5 ) ) ) ) )
=> ( P @ Xs ) ) ) ) ).
% lset_induct
thf(fact_132_lset__induct_H,axiom,
! [A: $tType,X: A,Xs: coinductive_llist @ A,P: ( coinductive_llist @ A ) > $o] :
( ( member @ A @ X @ ( coinductive_lset @ A @ Xs ) )
=> ( ! [Xs5: coinductive_llist @ A] : ( P @ ( coinductive_LCons @ A @ X @ Xs5 ) )
=> ( ! [X7: A,Xs5: coinductive_llist @ A] :
( ( member @ A @ X @ ( coinductive_lset @ A @ Xs5 ) )
=> ( ( P @ Xs5 )
=> ( P @ ( coinductive_LCons @ A @ X7 @ Xs5 ) ) ) )
=> ( P @ Xs ) ) ) ) ).
% lset_induct'
thf(fact_133_llist_Oset__cases,axiom,
! [A: $tType,E2: A,A3: coinductive_llist @ A] :
( ( member @ A @ E2 @ ( coinductive_lset @ A @ A3 ) )
=> ( ! [Z22: coinductive_llist @ A] :
( A3
!= ( coinductive_LCons @ A @ E2 @ Z22 ) )
=> ~ ! [Z1: A,Z22: coinductive_llist @ A] :
( ( A3
= ( coinductive_LCons @ A @ Z1 @ Z22 ) )
=> ~ ( member @ A @ E2 @ ( coinductive_lset @ A @ Z22 ) ) ) ) ) ).
% llist.set_cases
thf(fact_134_llist_Oset__induct,axiom,
! [A: $tType,X: A,A3: coinductive_llist @ A,P: A > ( coinductive_llist @ A ) > $o] :
( ( member @ A @ X @ ( coinductive_lset @ A @ A3 ) )
=> ( ! [Z1: A,Z22: coinductive_llist @ A] : ( P @ Z1 @ ( coinductive_LCons @ A @ Z1 @ Z22 ) )
=> ( ! [Z1: A,Z22: coinductive_llist @ A,Xa2: A] :
( ( member @ A @ Xa2 @ ( coinductive_lset @ A @ Z22 ) )
=> ( ( P @ Xa2 @ Z22 )
=> ( P @ Xa2 @ ( coinductive_LCons @ A @ Z1 @ Z22 ) ) ) )
=> ( P @ X @ A3 ) ) ) ) ).
% llist.set_induct
thf(fact_135_llist__all2__reflI,axiom,
! [A: $tType,Xs: coinductive_llist @ A,P: A > A > $o] :
( ! [X4: A] :
( ( member @ A @ X4 @ ( coinductive_lset @ A @ Xs ) )
=> ( P @ X4 @ X4 ) )
=> ( coindu1486289336t_all2 @ A @ A @ P @ Xs @ Xs ) ) ).
% llist_all2_reflI
thf(fact_136_llist__all2__lsetD1,axiom,
! [A: $tType,B: $tType,P: A > B > $o,Xs: coinductive_llist @ A,Ys: coinductive_llist @ B,X: A] :
( ( coindu1486289336t_all2 @ A @ B @ P @ Xs @ Ys )
=> ( ( member @ A @ X @ ( coinductive_lset @ A @ Xs ) )
=> ? [X4: B] :
( ( member @ B @ X4 @ ( coinductive_lset @ B @ Ys ) )
& ( P @ X @ X4 ) ) ) ) ).
% llist_all2_lsetD1
thf(fact_137_llist__all2__lsetD2,axiom,
! [A: $tType,B: $tType,P: A > B > $o,Xs: coinductive_llist @ A,Ys: coinductive_llist @ B,Y4: B] :
( ( coindu1486289336t_all2 @ A @ B @ P @ Xs @ Ys )
=> ( ( member @ B @ Y4 @ ( coinductive_lset @ B @ Ys ) )
=> ? [X4: A] :
( ( member @ A @ X4 @ ( coinductive_lset @ A @ Xs ) )
& ( P @ X4 @ Y4 ) ) ) ) ).
% llist_all2_lsetD2
thf(fact_138_llist_Orel__cong,axiom,
! [A: $tType,B: $tType,X: coinductive_llist @ A,Ya: coinductive_llist @ A,Y4: coinductive_llist @ B,Xa: coinductive_llist @ B,R2: A > B > $o,Ra: A > B > $o] :
( ( X = Ya )
=> ( ( Y4 = Xa )
=> ( ! [Z3: A,Yb: B] :
( ( member @ A @ Z3 @ ( coinductive_lset @ A @ Ya ) )
=> ( ( member @ B @ Yb @ ( coinductive_lset @ B @ Xa ) )
=> ( ( R2 @ Z3 @ Yb )
= ( Ra @ Z3 @ Yb ) ) ) )
=> ( ( coindu1486289336t_all2 @ A @ B @ R2 @ X @ Y4 )
= ( coindu1486289336t_all2 @ A @ B @ Ra @ Ya @ Xa ) ) ) ) ) ).
% llist.rel_cong
thf(fact_139_llist_Orel__mono__strong,axiom,
! [A: $tType,B: $tType,R2: A > B > $o,X: coinductive_llist @ A,Y4: coinductive_llist @ B,Ra: A > B > $o] :
( ( coindu1486289336t_all2 @ A @ B @ R2 @ X @ Y4 )
=> ( ! [Z3: A,Yb: B] :
( ( member @ A @ Z3 @ ( coinductive_lset @ A @ X ) )
=> ( ( member @ B @ Yb @ ( coinductive_lset @ B @ Y4 ) )
=> ( ( R2 @ Z3 @ Yb )
=> ( Ra @ Z3 @ Yb ) ) ) )
=> ( coindu1486289336t_all2 @ A @ B @ Ra @ X @ Y4 ) ) ) ).
% llist.rel_mono_strong
thf(fact_140_llist_Orel__refl__strong,axiom,
! [A: $tType,X: coinductive_llist @ A,Ra: A > A > $o] :
( ! [Z3: A] :
( ( member @ A @ Z3 @ ( coinductive_lset @ A @ X ) )
=> ( Ra @ Z3 @ Z3 ) )
=> ( coindu1486289336t_all2 @ A @ A @ Ra @ X @ X ) ) ).
% llist.rel_refl_strong
thf(fact_141_lfilter__cong,axiom,
! [A: $tType,Xs: coinductive_llist @ A,Ys: coinductive_llist @ A,P: A > $o,Q: A > $o] :
( ( Xs = Ys )
=> ( ! [X4: A] :
( ( member @ A @ X4 @ ( coinductive_lset @ A @ Ys ) )
=> ( ( P @ X4 )
= ( Q @ X4 ) ) )
=> ( ( coinductive_lfilter @ A @ P @ Xs )
= ( coinductive_lfilter @ A @ Q @ Ys ) ) ) ) ).
% lfilter_cong
thf(fact_142_lfilter__id__conv,axiom,
! [A: $tType,P: A > $o,Xs: coinductive_llist @ A] :
( ( ( coinductive_lfilter @ A @ P @ Xs )
= Xs )
= ( ! [X3: A] :
( ( member @ A @ X3 @ ( coinductive_lset @ A @ Xs ) )
=> ( P @ X3 ) ) ) ) ).
% lfilter_id_conv
thf(fact_143_lstrict__prefix__def,axiom,
! [A: $tType] :
( ( coindu1478340336prefix @ A )
= ( ^ [Xs3: coinductive_llist @ A,Ys3: coinductive_llist @ A] :
( ( coinductive_lprefix @ A @ Xs3 @ Ys3 )
& ( Xs3 != Ys3 ) ) ) ) ).
% lstrict_prefix_def
thf(fact_144_lstrict__prefix__lfinite1,axiom,
! [A: $tType,Xs: coinductive_llist @ A,Ys: coinductive_llist @ A] :
( ( coindu1478340336prefix @ A @ Xs @ Ys )
=> ( coinductive_lfinite @ A @ Xs ) ) ).
% lstrict_prefix_lfinite1
thf(fact_145_in__lset__lappend__iff,axiom,
! [A: $tType,X: A,Xs: coinductive_llist @ A,Ys: coinductive_llist @ A] :
( ( member @ A @ X @ ( coinductive_lset @ A @ ( coinductive_lappend @ A @ Xs @ Ys ) ) )
= ( ( member @ A @ X @ ( coinductive_lset @ A @ Xs ) )
| ( ( coinductive_lfinite @ A @ Xs )
& ( member @ A @ X @ ( coinductive_lset @ A @ Ys ) ) ) ) ) ).
% in_lset_lappend_iff
thf(fact_146_split__llist,axiom,
! [A: $tType,X: A,Xs: coinductive_llist @ A] :
( ( member @ A @ X @ ( coinductive_lset @ A @ Xs ) )
=> ? [Ys6: coinductive_llist @ A,Zs4: coinductive_llist @ A] :
( ( Xs
= ( coinductive_lappend @ A @ Ys6 @ ( coinductive_LCons @ A @ X @ Zs4 ) ) )
& ( coinductive_lfinite @ A @ Ys6 ) ) ) ).
% split_llist
thf(fact_147_split__llist__first,axiom,
! [A: $tType,X: A,Xs: coinductive_llist @ A] :
( ( member @ A @ X @ ( coinductive_lset @ A @ Xs ) )
=> ? [Ys6: coinductive_llist @ A,Zs4: coinductive_llist @ A] :
( ( Xs
= ( coinductive_lappend @ A @ Ys6 @ ( coinductive_LCons @ A @ X @ Zs4 ) ) )
& ( coinductive_lfinite @ A @ Ys6 )
& ~ ( member @ A @ X @ ( coinductive_lset @ A @ Ys6 ) ) ) ) ).
% split_llist_first
thf(fact_148_reflp__mono,axiom,
! [A: $tType,R2: A > A > $o,Q: A > A > $o] :
( ( reflp @ A @ R2 )
=> ( ! [X4: A,Y3: A] :
( ( R2 @ X4 @ Y3 )
=> ( Q @ X4 @ Y3 ) )
=> ( reflp @ A @ Q ) ) ) ).
% reflp_mono
thf(fact_149_lset__lappend__lfinite,axiom,
! [A: $tType,Xs: coinductive_llist @ A,Ys: coinductive_llist @ A] :
( ( coinductive_lfinite @ A @ Xs )
=> ( ( coinductive_lset @ A @ ( coinductive_lappend @ A @ Xs @ Ys ) )
= ( sup_sup @ ( set @ A ) @ ( coinductive_lset @ A @ Xs ) @ ( coinductive_lset @ A @ Ys ) ) ) ) ).
% lset_lappend_lfinite
thf(fact_150_The__case__prod,axiom,
! [B: $tType,A: $tType,P: A > B > $o] :
( ( the @ ( product_prod @ A @ B ) @ ( product_case_prod @ A @ B @ $o @ P ) )
= ( the @ ( product_prod @ A @ B )
@ ^ [Xy: product_prod @ A @ B] : ( P @ ( product_fst @ A @ B @ Xy ) @ ( product_snd @ A @ B @ Xy ) ) ) ) ).
% The_case_prod
thf(fact_151_llimit__induct,axiom,
! [A: $tType,P: ( coinductive_llist @ A ) > $o,Xs: coinductive_llist @ A] :
( ( P @ ( coinductive_LNil @ A ) )
=> ( ! [X4: A,Xs5: coinductive_llist @ A] :
( ( coinductive_lfinite @ A @ Xs5 )
=> ( ( P @ Xs5 )
=> ( P @ ( coinductive_LCons @ A @ X4 @ Xs5 ) ) ) )
=> ( ( ! [Ys5: coinductive_llist @ A] :
( ( coindu1478340336prefix @ A @ Ys5 @ Xs )
=> ( P @ Ys5 ) )
=> ( P @ Xs ) )
=> ( P @ Xs ) ) ) ) ).
% llimit_induct
thf(fact_152_prod_Oswap__def,axiom,
! [B: $tType,A: $tType] :
( ( product_swap @ A @ B )
= ( ^ [P4: product_prod @ A @ B] : ( product_Pair @ B @ A @ ( product_snd @ A @ B @ P4 ) @ ( product_fst @ A @ B @ P4 ) ) ) ) ).
% prod.swap_def
thf(fact_153_old_Oprod_Oinject,axiom,
! [A: $tType,B: $tType,A3: A,B3: B,A7: A,B5: B] :
( ( ( product_Pair @ A @ B @ A3 @ B3 )
= ( product_Pair @ A @ B @ A7 @ B5 ) )
= ( ( A3 = A7 )
& ( B3 = B5 ) ) ) ).
% old.prod.inject
thf(fact_154_prod_Oinject,axiom,
! [A: $tType,B: $tType,X12: A,X23: B,Y1: A,Y23: B] :
( ( ( product_Pair @ A @ B @ X12 @ X23 )
= ( product_Pair @ A @ B @ Y1 @ Y23 ) )
= ( ( X12 = Y1 )
& ( X23 = Y23 ) ) ) ).
% prod.inject
thf(fact_155_mem__case__prodI2,axiom,
! [C: $tType,B: $tType,A: $tType,P3: product_prod @ A @ B,Z2: C,C3: A > B > ( set @ C )] :
( ! [A4: A,B4: B] :
( ( P3
= ( product_Pair @ A @ B @ A4 @ B4 ) )
=> ( member @ C @ Z2 @ ( C3 @ A4 @ B4 ) ) )
=> ( member @ C @ Z2 @ ( product_case_prod @ A @ B @ ( set @ C ) @ C3 @ P3 ) ) ) ).
% mem_case_prodI2
thf(fact_156_mem__case__prodI,axiom,
! [A: $tType,B: $tType,C: $tType,Z2: A,C3: B > C > ( set @ A ),A3: B,B3: C] :
( ( member @ A @ Z2 @ ( C3 @ A3 @ B3 ) )
=> ( member @ A @ Z2 @ ( product_case_prod @ B @ C @ ( set @ A ) @ C3 @ ( product_Pair @ B @ C @ A3 @ B3 ) ) ) ) ).
% mem_case_prodI
thf(fact_157_lprefix__code_I1_J,axiom,
! [A: $tType,Ys: coinductive_llist @ A] : ( coinductive_lprefix @ A @ ( coinductive_LNil @ A ) @ Ys ) ).
% lprefix_code(1)
thf(fact_158_lfinite__code_I1_J,axiom,
! [A: $tType] : ( coinductive_lfinite @ A @ ( coinductive_LNil @ A ) ) ).
% lfinite_code(1)
thf(fact_159_llist__all2__LNil2,axiom,
! [B: $tType,A: $tType,P: A > B > $o,Xs: coinductive_llist @ A] :
( ( coindu1486289336t_all2 @ A @ B @ P @ Xs @ ( coinductive_LNil @ B ) )
= ( Xs
= ( coinductive_LNil @ A ) ) ) ).
% llist_all2_LNil2
thf(fact_160_llist__all2__LNil1,axiom,
! [A: $tType,B: $tType,P: A > B > $o,Xs: coinductive_llist @ B] :
( ( coindu1486289336t_all2 @ A @ B @ P @ ( coinductive_LNil @ A ) @ Xs )
= ( Xs
= ( coinductive_LNil @ B ) ) ) ).
% llist_all2_LNil1
thf(fact_161_lappend__LNil2,axiom,
! [A: $tType,Xs: coinductive_llist @ A] :
( ( coinductive_lappend @ A @ Xs @ ( coinductive_LNil @ A ) )
= Xs ) ).
% lappend_LNil2
thf(fact_162_lappend__code_I1_J,axiom,
! [A: $tType,Ys: coinductive_llist @ A] :
( ( coinductive_lappend @ A @ ( coinductive_LNil @ A ) @ Ys )
= Ys ) ).
% lappend_code(1)
thf(fact_163_apfst__conv,axiom,
! [C: $tType,A: $tType,B: $tType,F: C > A,X: C,Y4: B] :
( ( product_apfst @ C @ A @ B @ F @ ( product_Pair @ C @ B @ X @ Y4 ) )
= ( product_Pair @ A @ B @ ( F @ X ) @ Y4 ) ) ).
% apfst_conv
thf(fact_164_lfilter__LNil,axiom,
! [A: $tType,P: A > $o] :
( ( coinductive_lfilter @ A @ P @ ( coinductive_LNil @ A ) )
= ( coinductive_LNil @ A ) ) ).
% lfilter_LNil
thf(fact_165_swap__simp,axiom,
! [A: $tType,B: $tType,X: B,Y4: A] :
( ( product_swap @ B @ A @ ( product_Pair @ B @ A @ X @ Y4 ) )
= ( product_Pair @ A @ B @ Y4 @ X ) ) ).
% swap_simp
thf(fact_166_case__prod__conv,axiom,
! [B: $tType,A: $tType,C: $tType,F: B > C > A,A3: B,B3: C] :
( ( product_case_prod @ B @ C @ A @ F @ ( product_Pair @ B @ C @ A3 @ B3 ) )
= ( F @ A3 @ B3 ) ) ).
% case_prod_conv
thf(fact_167_lstrict__prefix__code_I1_J,axiom,
! [A: $tType] :
~ ( coindu1478340336prefix @ A @ ( coinductive_LNil @ A ) @ ( coinductive_LNil @ A ) ) ).
% lstrict_prefix_code(1)
thf(fact_168_case__prodI2,axiom,
! [B: $tType,A: $tType,P3: product_prod @ A @ B,C3: A > B > $o] :
( ! [A4: A,B4: B] :
( ( P3
= ( product_Pair @ A @ B @ A4 @ B4 ) )
=> ( C3 @ A4 @ B4 ) )
=> ( product_case_prod @ A @ B @ $o @ C3 @ P3 ) ) ).
% case_prodI2
thf(fact_169_case__prodI,axiom,
! [A: $tType,B: $tType,F: A > B > $o,A3: A,B3: B] :
( ( F @ A3 @ B3 )
=> ( product_case_prod @ A @ B @ $o @ F @ ( product_Pair @ A @ B @ A3 @ B3 ) ) ) ).
% case_prodI
thf(fact_170_lappendt__LNil,axiom,
! [B: $tType,A: $tType,Tr: tLList446370796tllist @ A @ B] :
( ( tLList98099029ppendt @ A @ B @ ( coinductive_LNil @ A ) @ Tr )
= Tr ) ).
% lappendt_LNil
thf(fact_171_case__prodI2_H,axiom,
! [A: $tType,B: $tType,C: $tType,P3: product_prod @ A @ B,C3: A > B > C > $o,X: C] :
( ! [A4: A,B4: B] :
( ( ( product_Pair @ A @ B @ A4 @ B4 )
= P3 )
=> ( C3 @ A4 @ B4 @ X ) )
=> ( product_case_prod @ A @ B @ ( C > $o ) @ C3 @ P3 @ X ) ) ).
% case_prodI2'
thf(fact_172_lfitler__K__False,axiom,
! [A: $tType,Xs: coinductive_llist @ A] :
( ( coinductive_lfilter @ A
@ ^ [Uu: A] : $false
@ Xs )
= ( coinductive_LNil @ A ) ) ).
% lfitler_K_False
thf(fact_173_prod_Ocollapse,axiom,
! [B: $tType,A: $tType,Prod: product_prod @ A @ B] :
( ( product_Pair @ A @ B @ ( product_fst @ A @ B @ Prod ) @ ( product_snd @ A @ B @ Prod ) )
= Prod ) ).
% prod.collapse
thf(fact_174_lprefix__LNil,axiom,
! [A: $tType,Xs: coinductive_llist @ A] :
( ( coinductive_lprefix @ A @ Xs @ ( coinductive_LNil @ A ) )
= ( coinductive_lnull @ A @ Xs ) ) ).
% lprefix_LNil
thf(fact_175_diverge__lfilter__LNil,axiom,
! [A: $tType,Xs: coinductive_llist @ A,P: A > $o] :
( ! [X4: A] :
( ( member @ A @ X4 @ ( coinductive_lset @ A @ Xs ) )
=> ~ ( P @ X4 ) )
=> ( ( coinductive_lfilter @ A @ P @ Xs )
= ( coinductive_LNil @ A ) ) ) ).
% diverge_lfilter_LNil
thf(fact_176_llast__singleton,axiom,
! [A: $tType,X: A] :
( ( coinductive_llast @ A @ ( coinductive_LCons @ A @ X @ ( coinductive_LNil @ A ) ) )
= X ) ).
% llast_singleton
thf(fact_177_lstrict__prefix__code_I3_J,axiom,
! [B: $tType,X: B,Xs: coinductive_llist @ B] :
~ ( coindu1478340336prefix @ B @ ( coinductive_LCons @ B @ X @ Xs ) @ ( coinductive_LNil @ B ) ) ).
% lstrict_prefix_code(3)
thf(fact_178_lstrict__prefix__code_I2_J,axiom,
! [B: $tType,Y4: B,Ys: coinductive_llist @ B] : ( coindu1478340336prefix @ B @ ( coinductive_LNil @ B ) @ ( coinductive_LCons @ B @ Y4 @ Ys ) ) ).
% lstrict_prefix_code(2)
thf(fact_179_The__split__eq,axiom,
! [A: $tType,B: $tType,X: A,Y4: B] :
( ( the @ ( product_prod @ A @ B )
@ ( product_case_prod @ A @ B @ $o
@ ^ [X8: A,Y5: B] :
( ( X = X8 )
& ( Y4 = Y5 ) ) ) )
= ( product_Pair @ A @ B @ X @ Y4 ) ) ).
% The_split_eq
thf(fact_180_pred__equals__eq2,axiom,
! [B: $tType,A: $tType,R2: set @ ( product_prod @ A @ B ),S: set @ ( product_prod @ A @ B )] :
( ( ( ^ [X3: A,Y: B] : ( member @ ( product_prod @ A @ B ) @ ( product_Pair @ A @ B @ X3 @ Y ) @ R2 ) )
= ( ^ [X3: A,Y: B] : ( member @ ( product_prod @ A @ B ) @ ( product_Pair @ A @ B @ X3 @ Y ) @ S ) ) )
= ( R2 = S ) ) ).
% pred_equals_eq2
thf(fact_181_old_Oprod_Ocase,axiom,
! [A: $tType,C: $tType,B: $tType,F: A > B > C,X12: A,X23: B] :
( ( product_case_prod @ A @ B @ C @ F @ ( product_Pair @ A @ B @ X12 @ X23 ) )
= ( F @ X12 @ X23 ) ) ).
% old.prod.case
thf(fact_182_LNil__lprefix,axiom,
! [A: $tType,Xs: coinductive_llist @ A] : ( coinductive_lprefix @ A @ ( coinductive_LNil @ A ) @ Xs ) ).
% LNil_lprefix
thf(fact_183_llist_Odistinct_I1_J,axiom,
! [A: $tType,X21: A,X22: coinductive_llist @ A] :
( ( coinductive_LNil @ A )
!= ( coinductive_LCons @ A @ X21 @ X22 ) ) ).
% llist.distinct(1)
thf(fact_184_llist_Oexhaust,axiom,
! [A: $tType,Y4: coinductive_llist @ A] :
( ( Y4
!= ( coinductive_LNil @ A ) )
=> ~ ! [X212: A,X222: coinductive_llist @ A] :
( Y4
!= ( coinductive_LCons @ A @ X212 @ X222 ) ) ) ).
% llist.exhaust
thf(fact_185_neq__LNil__conv,axiom,
! [A: $tType,Xs: coinductive_llist @ A] :
( ( Xs
!= ( coinductive_LNil @ A ) )
= ( ? [X3: A,Xs4: coinductive_llist @ A] :
( Xs
= ( coinductive_LCons @ A @ X3 @ Xs4 ) ) ) ) ).
% neq_LNil_conv
thf(fact_186_split__fst,axiom,
! [B: $tType,A: $tType,R2: A > $o,P3: product_prod @ A @ B] :
( ( R2 @ ( product_fst @ A @ B @ P3 ) )
= ( ! [X3: A,Y: B] :
( ( P3
= ( product_Pair @ A @ B @ X3 @ Y ) )
=> ( R2 @ X3 ) ) ) ) ).
% split_fst
thf(fact_187_split__fst__asm,axiom,
! [B: $tType,A: $tType,R2: A > $o,P3: product_prod @ A @ B] :
( ( R2 @ ( product_fst @ A @ B @ P3 ) )
= ( ~ ? [X3: A,Y: B] :
( ( P3
= ( product_Pair @ A @ B @ X3 @ Y ) )
& ~ ( R2 @ X3 ) ) ) ) ).
% split_fst_asm
thf(fact_188_fst__eqD,axiom,
! [B: $tType,A: $tType,X: A,Y4: B,A3: A] :
( ( ( product_fst @ A @ B @ ( product_Pair @ A @ B @ X @ Y4 ) )
= A3 )
=> ( X = A3 ) ) ).
% fst_eqD
thf(fact_189_fst__conv,axiom,
! [B: $tType,A: $tType,X12: A,X23: B] :
( ( product_fst @ A @ B @ ( product_Pair @ A @ B @ X12 @ X23 ) )
= X12 ) ).
% fst_conv
thf(fact_190_llist_Odisc_I1_J,axiom,
! [A: $tType] : ( coinductive_lnull @ A @ ( coinductive_LNil @ A ) ) ).
% llist.disc(1)
thf(fact_191_llist_OdiscI_I1_J,axiom,
! [A: $tType,Llist: coinductive_llist @ A] :
( ( Llist
= ( coinductive_LNil @ A ) )
=> ( coinductive_lnull @ A @ Llist ) ) ).
% llist.discI(1)
thf(fact_192_llist_Ocollapse_I1_J,axiom,
! [A: $tType,Llist: coinductive_llist @ A] :
( ( coinductive_lnull @ A @ Llist )
=> ( Llist
= ( coinductive_LNil @ A ) ) ) ).
% llist.collapse(1)
thf(fact_193_lnull__def,axiom,
! [A: $tType] :
( ( coinductive_lnull @ A )
= ( ^ [Llist2: coinductive_llist @ A] :
( Llist2
= ( coinductive_LNil @ A ) ) ) ) ).
% lnull_def
thf(fact_194_snd__eqD,axiom,
! [B: $tType,A: $tType,X: B,Y4: A,A3: A] :
( ( ( product_snd @ B @ A @ ( product_Pair @ B @ A @ X @ Y4 ) )
= A3 )
=> ( Y4 = A3 ) ) ).
% snd_eqD
thf(fact_195_snd__conv,axiom,
! [Aa: $tType,A: $tType,X12: Aa,X23: A] :
( ( product_snd @ Aa @ A @ ( product_Pair @ Aa @ A @ X12 @ X23 ) )
= X23 ) ).
% snd_conv
thf(fact_196_lfinite__LNil,axiom,
! [A: $tType] : ( coinductive_lfinite @ A @ ( coinductive_LNil @ A ) ) ).
% lfinite_LNil
thf(fact_197_LNil__transfer,axiom,
! [A: $tType,B: $tType,P: A > B > $o] : ( coindu1486289336t_all2 @ A @ B @ P @ ( coinductive_LNil @ A ) @ ( coinductive_LNil @ B ) ) ).
% LNil_transfer
thf(fact_198_llist__all2__LNil__LNil,axiom,
! [A: $tType,B: $tType,R2: A > B > $o] : ( coindu1486289336t_all2 @ A @ B @ R2 @ ( coinductive_LNil @ A ) @ ( coinductive_LNil @ B ) ) ).
% llist_all2_LNil_LNil
thf(fact_199_lappend__LNil__LNil,axiom,
! [A: $tType] :
( ( coinductive_lappend @ A @ ( coinductive_LNil @ A ) @ ( coinductive_LNil @ A ) )
= ( coinductive_LNil @ A ) ) ).
% lappend_LNil_LNil
thf(fact_200_LNil__eq__lappend__iff,axiom,
! [A: $tType,Xs: coinductive_llist @ A,Ys: coinductive_llist @ A] :
( ( ( coinductive_LNil @ A )
= ( coinductive_lappend @ A @ Xs @ Ys ) )
= ( ( Xs
= ( coinductive_LNil @ A ) )
& ( Ys
= ( coinductive_LNil @ A ) ) ) ) ).
% LNil_eq_lappend_iff
thf(fact_201_lappend__eq__LNil__iff,axiom,
! [A: $tType,Xs: coinductive_llist @ A,Ys: coinductive_llist @ A] :
( ( ( coinductive_lappend @ A @ Xs @ Ys )
= ( coinductive_LNil @ A ) )
= ( ( Xs
= ( coinductive_LNil @ A ) )
& ( Ys
= ( coinductive_LNil @ A ) ) ) ) ).
% lappend_eq_LNil_iff
thf(fact_202_old_Oprod_Oinducts,axiom,
! [B: $tType,A: $tType,P: ( product_prod @ A @ B ) > $o,Prod: product_prod @ A @ B] :
( ! [A4: A,B4: B] : ( P @ ( product_Pair @ A @ B @ A4 @ B4 ) )
=> ( P @ Prod ) ) ).
% old.prod.inducts
thf(fact_203_old_Oprod_Oexhaust,axiom,
! [A: $tType,B: $tType,Y4: product_prod @ A @ B] :
~ ! [A4: A,B4: B] :
( Y4
!= ( product_Pair @ A @ B @ A4 @ B4 ) ) ).
% old.prod.exhaust
thf(fact_204_prod__induct7,axiom,
! [G3: $tType,F3: $tType,E: $tType,D: $tType,C: $tType,B: $tType,A: $tType,P: ( product_prod @ A @ ( product_prod @ B @ ( product_prod @ C @ ( product_prod @ D @ ( product_prod @ E @ ( product_prod @ F3 @ G3 ) ) ) ) ) ) > $o,X: product_prod @ A @ ( product_prod @ B @ ( product_prod @ C @ ( product_prod @ D @ ( product_prod @ E @ ( product_prod @ F3 @ G3 ) ) ) ) )] :
( ! [A4: A,B4: B,C4: C,D2: D,E3: E,F4: F3,G4: G3] : ( P @ ( product_Pair @ A @ ( product_prod @ B @ ( product_prod @ C @ ( product_prod @ D @ ( product_prod @ E @ ( product_prod @ F3 @ G3 ) ) ) ) ) @ A4 @ ( product_Pair @ B @ ( product_prod @ C @ ( product_prod @ D @ ( product_prod @ E @ ( product_prod @ F3 @ G3 ) ) ) ) @ B4 @ ( product_Pair @ C @ ( product_prod @ D @ ( product_prod @ E @ ( product_prod @ F3 @ G3 ) ) ) @ C4 @ ( product_Pair @ D @ ( product_prod @ E @ ( product_prod @ F3 @ G3 ) ) @ D2 @ ( product_Pair @ E @ ( product_prod @ F3 @ G3 ) @ E3 @ ( product_Pair @ F3 @ G3 @ F4 @ G4 ) ) ) ) ) ) )
=> ( P @ X ) ) ).
% prod_induct7
thf(fact_205_prod__induct6,axiom,
! [F3: $tType,E: $tType,D: $tType,C: $tType,B: $tType,A: $tType,P: ( product_prod @ A @ ( product_prod @ B @ ( product_prod @ C @ ( product_prod @ D @ ( product_prod @ E @ F3 ) ) ) ) ) > $o,X: product_prod @ A @ ( product_prod @ B @ ( product_prod @ C @ ( product_prod @ D @ ( product_prod @ E @ F3 ) ) ) )] :
( ! [A4: A,B4: B,C4: C,D2: D,E3: E,F4: F3] : ( P @ ( product_Pair @ A @ ( product_prod @ B @ ( product_prod @ C @ ( product_prod @ D @ ( product_prod @ E @ F3 ) ) ) ) @ A4 @ ( product_Pair @ B @ ( product_prod @ C @ ( product_prod @ D @ ( product_prod @ E @ F3 ) ) ) @ B4 @ ( product_Pair @ C @ ( product_prod @ D @ ( product_prod @ E @ F3 ) ) @ C4 @ ( product_Pair @ D @ ( product_prod @ E @ F3 ) @ D2 @ ( product_Pair @ E @ F3 @ E3 @ F4 ) ) ) ) ) )
=> ( P @ X ) ) ).
% prod_induct6
thf(fact_206_prod__induct5,axiom,
! [E: $tType,D: $tType,C: $tType,B: $tType,A: $tType,P: ( product_prod @ A @ ( product_prod @ B @ ( product_prod @ C @ ( product_prod @ D @ E ) ) ) ) > $o,X: product_prod @ A @ ( product_prod @ B @ ( product_prod @ C @ ( product_prod @ D @ E ) ) )] :
( ! [A4: A,B4: B,C4: C,D2: D,E3: E] : ( P @ ( product_Pair @ A @ ( product_prod @ B @ ( product_prod @ C @ ( product_prod @ D @ E ) ) ) @ A4 @ ( product_Pair @ B @ ( product_prod @ C @ ( product_prod @ D @ E ) ) @ B4 @ ( product_Pair @ C @ ( product_prod @ D @ E ) @ C4 @ ( product_Pair @ D @ E @ D2 @ E3 ) ) ) ) )
=> ( P @ X ) ) ).
% prod_induct5
thf(fact_207_prod__induct4,axiom,
! [D: $tType,C: $tType,B: $tType,A: $tType,P: ( product_prod @ A @ ( product_prod @ B @ ( product_prod @ C @ D ) ) ) > $o,X: product_prod @ A @ ( product_prod @ B @ ( product_prod @ C @ D ) )] :
( ! [A4: A,B4: B,C4: C,D2: D] : ( P @ ( product_Pair @ A @ ( product_prod @ B @ ( product_prod @ C @ D ) ) @ A4 @ ( product_Pair @ B @ ( product_prod @ C @ D ) @ B4 @ ( product_Pair @ C @ D @ C4 @ D2 ) ) ) )
=> ( P @ X ) ) ).
% prod_induct4
thf(fact_208_prod__induct3,axiom,
! [C: $tType,B: $tType,A: $tType,P: ( product_prod @ A @ ( product_prod @ B @ C ) ) > $o,X: product_prod @ A @ ( product_prod @ B @ C )] :
( ! [A4: A,B4: B,C4: C] : ( P @ ( product_Pair @ A @ ( product_prod @ B @ C ) @ A4 @ ( product_Pair @ B @ C @ B4 @ C4 ) ) )
=> ( P @ X ) ) ).
% prod_induct3
thf(fact_209_prod__cases7,axiom,
! [A: $tType,B: $tType,C: $tType,D: $tType,E: $tType,F3: $tType,G3: $tType,Y4: product_prod @ A @ ( product_prod @ B @ ( product_prod @ C @ ( product_prod @ D @ ( product_prod @ E @ ( product_prod @ F3 @ G3 ) ) ) ) )] :
~ ! [A4: A,B4: B,C4: C,D2: D,E3: E,F4: F3,G4: G3] :
( Y4
!= ( product_Pair @ A @ ( product_prod @ B @ ( product_prod @ C @ ( product_prod @ D @ ( product_prod @ E @ ( product_prod @ F3 @ G3 ) ) ) ) ) @ A4 @ ( product_Pair @ B @ ( product_prod @ C @ ( product_prod @ D @ ( product_prod @ E @ ( product_prod @ F3 @ G3 ) ) ) ) @ B4 @ ( product_Pair @ C @ ( product_prod @ D @ ( product_prod @ E @ ( product_prod @ F3 @ G3 ) ) ) @ C4 @ ( product_Pair @ D @ ( product_prod @ E @ ( product_prod @ F3 @ G3 ) ) @ D2 @ ( product_Pair @ E @ ( product_prod @ F3 @ G3 ) @ E3 @ ( product_Pair @ F3 @ G3 @ F4 @ G4 ) ) ) ) ) ) ) ).
% prod_cases7
thf(fact_210_prod__cases6,axiom,
! [A: $tType,B: $tType,C: $tType,D: $tType,E: $tType,F3: $tType,Y4: product_prod @ A @ ( product_prod @ B @ ( product_prod @ C @ ( product_prod @ D @ ( product_prod @ E @ F3 ) ) ) )] :
~ ! [A4: A,B4: B,C4: C,D2: D,E3: E,F4: F3] :
( Y4
!= ( product_Pair @ A @ ( product_prod @ B @ ( product_prod @ C @ ( product_prod @ D @ ( product_prod @ E @ F3 ) ) ) ) @ A4 @ ( product_Pair @ B @ ( product_prod @ C @ ( product_prod @ D @ ( product_prod @ E @ F3 ) ) ) @ B4 @ ( product_Pair @ C @ ( product_prod @ D @ ( product_prod @ E @ F3 ) ) @ C4 @ ( product_Pair @ D @ ( product_prod @ E @ F3 ) @ D2 @ ( product_Pair @ E @ F3 @ E3 @ F4 ) ) ) ) ) ) ).
% prod_cases6
thf(fact_211_prod__cases5,axiom,
! [A: $tType,B: $tType,C: $tType,D: $tType,E: $tType,Y4: product_prod @ A @ ( product_prod @ B @ ( product_prod @ C @ ( product_prod @ D @ E ) ) )] :
~ ! [A4: A,B4: B,C4: C,D2: D,E3: E] :
( Y4
!= ( product_Pair @ A @ ( product_prod @ B @ ( product_prod @ C @ ( product_prod @ D @ E ) ) ) @ A4 @ ( product_Pair @ B @ ( product_prod @ C @ ( product_prod @ D @ E ) ) @ B4 @ ( product_Pair @ C @ ( product_prod @ D @ E ) @ C4 @ ( product_Pair @ D @ E @ D2 @ E3 ) ) ) ) ) ).
% prod_cases5
thf(fact_212_prod__cases4,axiom,
! [A: $tType,B: $tType,C: $tType,D: $tType,Y4: product_prod @ A @ ( product_prod @ B @ ( product_prod @ C @ D ) )] :
~ ! [A4: A,B4: B,C4: C,D2: D] :
( Y4
!= ( product_Pair @ A @ ( product_prod @ B @ ( product_prod @ C @ D ) ) @ A4 @ ( product_Pair @ B @ ( product_prod @ C @ D ) @ B4 @ ( product_Pair @ C @ D @ C4 @ D2 ) ) ) ) ).
% prod_cases4
thf(fact_213_prod__cases3,axiom,
! [A: $tType,B: $tType,C: $tType,Y4: product_prod @ A @ ( product_prod @ B @ C )] :
~ ! [A4: A,B4: B,C4: C] :
( Y4
!= ( product_Pair @ A @ ( product_prod @ B @ C ) @ A4 @ ( product_Pair @ B @ C @ B4 @ C4 ) ) ) ).
% prod_cases3
thf(fact_214_Pair__inject,axiom,
! [A: $tType,B: $tType,A3: A,B3: B,A7: A,B5: B] :
( ( ( product_Pair @ A @ B @ A3 @ B3 )
= ( product_Pair @ A @ B @ A7 @ B5 ) )
=> ~ ( ( A3 = A7 )
=> ( B3 != B5 ) ) ) ).
% Pair_inject
thf(fact_215_prod__cases,axiom,
! [B: $tType,A: $tType,P: ( product_prod @ A @ B ) > $o,P3: product_prod @ A @ B] :
( ! [A4: A,B4: B] : ( P @ ( product_Pair @ A @ B @ A4 @ B4 ) )
=> ( P @ P3 ) ) ).
% prod_cases
thf(fact_216_surj__pair,axiom,
! [A: $tType,B: $tType,P3: product_prod @ A @ B] :
? [X4: A,Y3: B] :
( P3
= ( product_Pair @ A @ B @ X4 @ Y3 ) ) ).
% surj_pair
thf(fact_217_case__prod__Pair__iden,axiom,
! [B: $tType,A: $tType,P3: product_prod @ A @ B] :
( ( product_case_prod @ A @ B @ ( product_prod @ A @ B ) @ ( product_Pair @ A @ B ) @ P3 )
= P3 ) ).
% case_prod_Pair_iden
thf(fact_218_mem__case__prodE,axiom,
! [B: $tType,A: $tType,C: $tType,Z2: A,C3: B > C > ( set @ A ),P3: product_prod @ B @ C] :
( ( member @ A @ Z2 @ ( product_case_prod @ B @ C @ ( set @ A ) @ C3 @ P3 ) )
=> ~ ! [X4: B,Y3: C] :
( ( P3
= ( product_Pair @ B @ C @ X4 @ Y3 ) )
=> ~ ( member @ A @ Z2 @ ( C3 @ X4 @ Y3 ) ) ) ) ).
% mem_case_prodE
thf(fact_219_Pair__scomp,axiom,
! [A: $tType,B: $tType,C: $tType,X: C,F: C > A > B] :
( ( product_scomp @ A @ C @ A @ B @ ( product_Pair @ C @ A @ X ) @ F )
= ( F @ X ) ) ).
% Pair_scomp
thf(fact_220_cond__case__prod__eta,axiom,
! [C: $tType,B: $tType,A: $tType,F: A > B > C,G: ( product_prod @ A @ B ) > C] :
( ! [X4: A,Y3: B] :
( ( F @ X4 @ Y3 )
= ( G @ ( product_Pair @ A @ B @ X4 @ Y3 ) ) )
=> ( ( product_case_prod @ A @ B @ C @ F )
= G ) ) ).
% cond_case_prod_eta
thf(fact_221_case__prod__eta,axiom,
! [C: $tType,B: $tType,A: $tType,F: ( product_prod @ A @ B ) > C] :
( ( product_case_prod @ A @ B @ C
@ ^ [X3: A,Y: B] : ( F @ ( product_Pair @ A @ B @ X3 @ Y ) ) )
= F ) ).
% case_prod_eta
thf(fact_222_case__prodE2,axiom,
! [B: $tType,A: $tType,C: $tType,Q: A > $o,P: B > C > A,Z2: product_prod @ B @ C] :
( ( Q @ ( product_case_prod @ B @ C @ A @ P @ Z2 ) )
=> ~ ! [X4: B,Y3: C] :
( ( Z2
= ( product_Pair @ B @ C @ X4 @ Y3 ) )
=> ~ ( Q @ ( P @ X4 @ Y3 ) ) ) ) ).
% case_prodE2
thf(fact_223_scomp__Pair,axiom,
! [C: $tType,B: $tType,A: $tType,X: A > ( product_prod @ B @ C )] :
( ( product_scomp @ A @ B @ C @ ( product_prod @ B @ C ) @ X @ ( product_Pair @ B @ C ) )
= X ) ).
% scomp_Pair
thf(fact_224_case__prodE,axiom,
! [A: $tType,B: $tType,C3: A > B > $o,P3: product_prod @ A @ B] :
( ( product_case_prod @ A @ B @ $o @ C3 @ P3 )
=> ~ ! [X4: A,Y3: B] :
( ( P3
= ( product_Pair @ A @ B @ X4 @ Y3 ) )
=> ~ ( C3 @ X4 @ Y3 ) ) ) ).
% case_prodE
thf(fact_225_case__prodD,axiom,
! [A: $tType,B: $tType,F: A > B > $o,A3: A,B3: B] :
( ( product_case_prod @ A @ B @ $o @ F @ ( product_Pair @ A @ B @ A3 @ B3 ) )
=> ( F @ A3 @ B3 ) ) ).
% case_prodD
thf(fact_226_Coinductive__List_Ofinite__lprefix__nitpick__simps_I1_J,axiom,
! [A: $tType,Xs: coinductive_llist @ A] :
( ( coindu328551480prefix @ A @ Xs @ ( coinductive_LNil @ A ) )
= ( Xs
= ( coinductive_LNil @ A ) ) ) ).
% Coinductive_List.finite_lprefix_nitpick_simps(1)
thf(fact_227_Coinductive__List_Ofinite__lprefix__nitpick__simps_I2_J,axiom,
! [A: $tType,Xs: coinductive_llist @ A] : ( coindu328551480prefix @ A @ ( coinductive_LNil @ A ) @ Xs ) ).
% Coinductive_List.finite_lprefix_nitpick_simps(2)
thf(fact_228_case__prodE_H,axiom,
! [B: $tType,A: $tType,C: $tType,C3: A > B > C > $o,P3: product_prod @ A @ B,Z2: C] :
( ( product_case_prod @ A @ B @ ( C > $o ) @ C3 @ P3 @ Z2 )
=> ~ ! [X4: A,Y3: B] :
( ( P3
= ( product_Pair @ A @ B @ X4 @ Y3 ) )
=> ~ ( C3 @ X4 @ Y3 @ Z2 ) ) ) ).
% case_prodE'
thf(fact_229_case__prodD_H,axiom,
! [B: $tType,A: $tType,C: $tType,R2: A > B > C > $o,A3: A,B3: B,C3: C] :
( ( product_case_prod @ A @ B @ ( C > $o ) @ R2 @ ( product_Pair @ A @ B @ A3 @ B3 ) @ C3 )
=> ( R2 @ A3 @ B3 @ C3 ) ) ).
% case_prodD'
thf(fact_230_lprefix__code_I2_J,axiom,
! [A: $tType,X: A,Xs: coinductive_llist @ A] :
~ ( coinductive_lprefix @ A @ ( coinductive_LCons @ A @ X @ Xs ) @ ( coinductive_LNil @ A ) ) ).
% lprefix_code(2)
thf(fact_231_lprefix_Ocases,axiom,
! [A: $tType,A1: coinductive_llist @ A,A22: coinductive_llist @ A] :
( ( coinductive_lprefix @ A @ A1 @ A22 )
=> ( ( ( A1
= ( coinductive_LNil @ A ) )
=> ! [Xs5: coinductive_llist @ A] : ( A22 != Xs5 ) )
=> ~ ! [Xs5: coinductive_llist @ A,Ys6: coinductive_llist @ A,X4: A] :
( ( A1
= ( coinductive_LCons @ A @ X4 @ Xs5 ) )
=> ( ( A22
= ( coinductive_LCons @ A @ X4 @ Ys6 ) )
=> ~ ( coinductive_lprefix @ A @ Xs5 @ Ys6 ) ) ) ) ) ).
% lprefix.cases
thf(fact_232_lprefix_Osimps,axiom,
! [A: $tType] :
( ( coinductive_lprefix @ A )
= ( ^ [A12: coinductive_llist @ A,A23: coinductive_llist @ A] :
( ? [Xs3: coinductive_llist @ A] :
( ( A12
= ( coinductive_LNil @ A ) )
& ( A23 = Xs3 ) )
| ? [Xs3: coinductive_llist @ A,Ys3: coinductive_llist @ A,X3: A] :
( ( A12
= ( coinductive_LCons @ A @ X3 @ Xs3 ) )
& ( A23
= ( coinductive_LCons @ A @ X3 @ Ys3 ) )
& ( coinductive_lprefix @ A @ Xs3 @ Ys3 ) ) ) ) ) ).
% lprefix.simps
thf(fact_233_lprefix_Ocoinduct,axiom,
! [A: $tType,X9: ( coinductive_llist @ A ) > ( coinductive_llist @ A ) > $o,X: coinductive_llist @ A,Xa: coinductive_llist @ A] :
( ( X9 @ X @ Xa )
=> ( ! [X4: coinductive_llist @ A,Xa2: coinductive_llist @ A] :
( ( X9 @ X4 @ Xa2 )
=> ( ? [Xs7: coinductive_llist @ A] :
( ( X4
= ( coinductive_LNil @ A ) )
& ( Xa2 = Xs7 ) )
| ? [Xs7: coinductive_llist @ A,Ys5: coinductive_llist @ A,Xb: A] :
( ( X4
= ( coinductive_LCons @ A @ Xb @ Xs7 ) )
& ( Xa2
= ( coinductive_LCons @ A @ Xb @ Ys5 ) )
& ( ( X9 @ Xs7 @ Ys5 )
| ( coinductive_lprefix @ A @ Xs7 @ Ys5 ) ) ) ) )
=> ( coinductive_lprefix @ A @ X @ Xa ) ) ) ).
% lprefix.coinduct
thf(fact_234_lprefix__LCons__conv,axiom,
! [A: $tType,Xs: coinductive_llist @ A,Y4: A,Ys: coinductive_llist @ A] :
( ( coinductive_lprefix @ A @ Xs @ ( coinductive_LCons @ A @ Y4 @ Ys ) )
= ( ( Xs
= ( coinductive_LNil @ A ) )
| ? [Xs4: coinductive_llist @ A] :
( ( Xs
= ( coinductive_LCons @ A @ Y4 @ Xs4 ) )
& ( coinductive_lprefix @ A @ Xs4 @ Ys ) ) ) ) ).
% lprefix_LCons_conv
thf(fact_235_conjI__realizer,axiom,
! [A: $tType,B: $tType,P: A > $o,P3: A,Q: B > $o,Q2: B] :
( ( P @ P3 )
=> ( ( Q @ Q2 )
=> ( ( P @ ( product_fst @ A @ B @ ( product_Pair @ A @ B @ P3 @ Q2 ) ) )
& ( Q @ ( product_snd @ A @ B @ ( product_Pair @ A @ B @ P3 @ Q2 ) ) ) ) ) ) ).
% conjI_realizer
thf(fact_236_exI__realizer,axiom,
! [B: $tType,A: $tType,P: A > B > $o,Y4: A,X: B] :
( ( P @ Y4 @ X )
=> ( P @ ( product_snd @ B @ A @ ( product_Pair @ B @ A @ X @ Y4 ) ) @ ( product_fst @ B @ A @ ( product_Pair @ B @ A @ X @ Y4 ) ) ) ) ).
% exI_realizer
thf(fact_237_prod_Oexhaust__sel,axiom,
! [B: $tType,A: $tType,Prod: product_prod @ A @ B] :
( Prod
= ( product_Pair @ A @ B @ ( product_fst @ A @ B @ Prod ) @ ( product_snd @ A @ B @ Prod ) ) ) ).
% prod.exhaust_sel
thf(fact_238_surjective__pairing,axiom,
! [B: $tType,A: $tType,T3: product_prod @ A @ B] :
( T3
= ( product_Pair @ A @ B @ ( product_fst @ A @ B @ T3 ) @ ( product_snd @ A @ B @ T3 ) ) ) ).
% surjective_pairing
thf(fact_239_lfinite_Oinducts,axiom,
! [A: $tType,X: coinductive_llist @ A,P: ( coinductive_llist @ A ) > $o] :
( ( coinductive_lfinite @ A @ X )
=> ( ( P @ ( coinductive_LNil @ A ) )
=> ( ! [Xs5: coinductive_llist @ A,X4: A] :
( ( coinductive_lfinite @ A @ Xs5 )
=> ( ( P @ Xs5 )
=> ( P @ ( coinductive_LCons @ A @ X4 @ Xs5 ) ) ) )
=> ( P @ X ) ) ) ) ).
% lfinite.inducts
thf(fact_240_lfinite_Osimps,axiom,
! [A: $tType] :
( ( coinductive_lfinite @ A )
= ( ^ [A2: coinductive_llist @ A] :
( ( A2
= ( coinductive_LNil @ A ) )
| ? [Xs3: coinductive_llist @ A,X3: A] :
( ( A2
= ( coinductive_LCons @ A @ X3 @ Xs3 ) )
& ( coinductive_lfinite @ A @ Xs3 ) ) ) ) ) ).
% lfinite.simps
thf(fact_241_lfinite_Ocases,axiom,
! [A: $tType,A3: coinductive_llist @ A] :
( ( coinductive_lfinite @ A @ A3 )
=> ( ( A3
!= ( coinductive_LNil @ A ) )
=> ~ ! [Xs5: coinductive_llist @ A] :
( ? [X4: A] :
( A3
= ( coinductive_LCons @ A @ X4 @ Xs5 ) )
=> ~ ( coinductive_lfinite @ A @ Xs5 ) ) ) ) ).
% lfinite.cases
thf(fact_242_llist__all2__LNil__LCons,axiom,
! [A: $tType,B: $tType,R2: A > B > $o,Y21: B,Y22: coinductive_llist @ B] :
~ ( coindu1486289336t_all2 @ A @ B @ R2 @ ( coinductive_LNil @ A ) @ ( coinductive_LCons @ B @ Y21 @ Y22 ) ) ).
% llist_all2_LNil_LCons
thf(fact_243_llist__all2__LCons__LNil,axiom,
! [A: $tType,B: $tType,R2: A > B > $o,Y21: A,Y22: coinductive_llist @ A] :
~ ( coindu1486289336t_all2 @ A @ B @ R2 @ ( coinductive_LCons @ A @ Y21 @ Y22 ) @ ( coinductive_LNil @ B ) ) ).
% llist_all2_LCons_LNil
thf(fact_244_llist__all2__cases,axiom,
! [A: $tType,B: $tType,P: A > B > $o,Xs: coinductive_llist @ A,Ys: coinductive_llist @ B] :
( ( coindu1486289336t_all2 @ A @ B @ P @ Xs @ Ys )
=> ( ( ( Xs
= ( coinductive_LNil @ A ) )
=> ( Ys
!= ( coinductive_LNil @ B ) ) )
=> ~ ! [X4: A,Xs6: coinductive_llist @ A] :
( ( Xs
= ( coinductive_LCons @ A @ X4 @ Xs6 ) )
=> ! [Y3: B,Ys7: coinductive_llist @ B] :
( ( Ys
= ( coinductive_LCons @ B @ Y3 @ Ys7 ) )
=> ( ( P @ X4 @ Y3 )
=> ~ ( coindu1486289336t_all2 @ A @ B @ P @ Xs6 @ Ys7 ) ) ) ) ) ) ).
% llist_all2_cases
thf(fact_245_llist_Orel__cases,axiom,
! [A: $tType,B: $tType,R2: A > B > $o,A3: coinductive_llist @ A,B3: coinductive_llist @ B] :
( ( coindu1486289336t_all2 @ A @ B @ R2 @ A3 @ B3 )
=> ( ( ( A3
= ( coinductive_LNil @ A ) )
=> ( B3
!= ( coinductive_LNil @ B ) ) )
=> ~ ! [X13: A,X24: coinductive_llist @ A] :
( ( A3
= ( coinductive_LCons @ A @ X13 @ X24 ) )
=> ! [Y12: B,Y24: coinductive_llist @ B] :
( ( B3
= ( coinductive_LCons @ B @ Y12 @ Y24 ) )
=> ( ( R2 @ X13 @ Y12 )
=> ~ ( coindu1486289336t_all2 @ A @ B @ R2 @ X24 @ Y24 ) ) ) ) ) ) ).
% llist.rel_cases
thf(fact_246_lappend__snocL1__conv__LCons2,axiom,
! [A: $tType,Xs: coinductive_llist @ A,Y4: A,Ys: coinductive_llist @ A] :
( ( coinductive_lappend @ A @ ( coinductive_lappend @ A @ Xs @ ( coinductive_LCons @ A @ Y4 @ ( coinductive_LNil @ A ) ) ) @ Ys )
= ( coinductive_lappend @ A @ Xs @ ( coinductive_LCons @ A @ Y4 @ Ys ) ) ) ).
% lappend_snocL1_conv_LCons2
thf(fact_247_lappend_Octr_I1_J,axiom,
! [A: $tType,Xs: coinductive_llist @ A,Ys: coinductive_llist @ A] :
( ( coinductive_lnull @ A @ Xs )
=> ( ( coinductive_lnull @ A @ Ys )
=> ( ( coinductive_lappend @ A @ Xs @ Ys )
= ( coinductive_LNil @ A ) ) ) ) ).
% lappend.ctr(1)
thf(fact_248_internal__case__prod__conv,axiom,
! [B: $tType,A: $tType,C: $tType,C3: B > C > A,A3: B,B3: C] :
( ( produc2004651681e_prod @ B @ C @ A @ C3 @ ( product_Pair @ B @ C @ A3 @ B3 ) )
= ( C3 @ A3 @ B3 ) ) ).
% internal_case_prod_conv
thf(fact_249_lfilter__empty__conv,axiom,
! [A: $tType,P: A > $o,Xs: coinductive_llist @ A] :
( ( ( coinductive_lfilter @ A @ P @ Xs )
= ( coinductive_LNil @ A ) )
= ( ! [X3: A] :
( ( member @ A @ X3 @ ( coinductive_lset @ A @ Xs ) )
=> ~ ( P @ X3 ) ) ) ) ).
% lfilter_empty_conv
thf(fact_250_llast__LNil,axiom,
! [A: $tType] :
( ( coinductive_llast @ A @ ( coinductive_LNil @ A ) )
= ( undefined @ A ) ) ).
% llast_LNil
thf(fact_251_Coinductive__List_Ofinite__lprefix__nitpick__simps_I3_J,axiom,
! [A: $tType,Xs: coinductive_llist @ A,Y4: A,Ys: coinductive_llist @ A] :
( ( coindu328551480prefix @ A @ Xs @ ( coinductive_LCons @ A @ Y4 @ Ys ) )
= ( ( Xs
= ( coinductive_LNil @ A ) )
| ? [Xs4: coinductive_llist @ A] :
( ( Xs
= ( coinductive_LCons @ A @ Y4 @ Xs4 ) )
& ( coindu328551480prefix @ A @ Xs4 @ Ys ) ) ) ) ).
% Coinductive_List.finite_lprefix_nitpick_simps(3)
thf(fact_252_prod_Osplit__sel__asm,axiom,
! [C: $tType,B: $tType,A: $tType,P: C > $o,F: A > B > C,Prod: product_prod @ A @ B] :
( ( P @ ( product_case_prod @ A @ B @ C @ F @ Prod ) )
= ( ~ ( ( Prod
= ( product_Pair @ A @ B @ ( product_fst @ A @ B @ Prod ) @ ( product_snd @ A @ B @ Prod ) ) )
& ~ ( P @ ( F @ ( product_fst @ A @ B @ Prod ) @ ( product_snd @ A @ B @ Prod ) ) ) ) ) ) ).
% prod.split_sel_asm
%----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,Y4: A] :
( ( if @ A @ $false @ X @ Y4 )
= Y4 ) ).
thf(help_If_1_1_T,axiom,
! [A: $tType,X: A,Y4: A] :
( ( if @ A @ $true @ X @ Y4 )
= X ) ).
%----Conjectures (3)
thf(conj_0,hypothesis,
( product_case_prod @ ( coinductive_llist @ a ) @ c @ ( ( product_prod @ ( coinductive_llist @ b ) @ d ) > $o )
@ ^ [Xs3: coinductive_llist @ a,B2: c] :
( product_case_prod @ ( coinductive_llist @ b ) @ d @ $o
@ ^ [Ys3: coinductive_llist @ b,B6: d] :
( ( coindu1486289336t_all2 @ a @ b @ pa @ Xs3 @ Ys3 )
& ( ( coinductive_lfinite @ a @ Xs3 )
=> ( qa @ B2 @ B6 ) ) ) )
@ xsa
@ ysa ) ).
thf(conj_1,hypothesis,
( ( coinductive_lfinite @ a @ ( product_fst @ ( coinductive_llist @ a ) @ c @ xsa ) )
=> ( ( coinductive_lfinite @ b @ ( product_fst @ ( coinductive_llist @ b ) @ d @ ysa ) )
=> ( ( qa
@ ( product_case_prod @ ( coinductive_llist @ a ) @ c @ c
@ ^ [Xs3: coinductive_llist @ a,B2: c] : ( if @ c @ ( coinductive_lfinite @ a @ Xs3 ) @ B2 @ ( undefined @ c ) )
@ xsa )
@ ( product_case_prod @ ( coinductive_llist @ b ) @ d @ d
@ ^ [Xs3: coinductive_llist @ b,B2: d] : ( if @ d @ ( coinductive_lfinite @ b @ Xs3 ) @ B2 @ ( undefined @ d ) )
@ ysa ) )
=> ( product_case_prod @ ( coinductive_llist @ a ) @ e @ ( ( product_prod @ ( coinductive_llist @ b ) @ f ) > $o )
@ ^ [Xs3: coinductive_llist @ a,B2: e] :
( product_case_prod @ ( coinductive_llist @ b ) @ f @ $o
@ ^ [Ys3: coinductive_llist @ b,B6: f] :
( ( coindu1486289336t_all2 @ a @ b @ pa @ Xs3 @ Ys3 )
& ( ( coinductive_lfinite @ a @ Xs3 )
=> ( ra @ B2 @ B6 ) ) ) )
@ ( xs_a
@ ( product_case_prod @ ( coinductive_llist @ a ) @ c @ c
@ ^ [Xs3: coinductive_llist @ a,B2: c] : ( if @ c @ ( coinductive_lfinite @ a @ Xs3 ) @ B2 @ ( undefined @ c ) )
@ xsa ) )
@ ( ys_a
@ ( product_case_prod @ ( coinductive_llist @ b ) @ d @ d
@ ^ [Xs3: coinductive_llist @ b,B2: d] : ( if @ d @ ( coinductive_lfinite @ b @ Xs3 ) @ B2 @ ( undefined @ d ) )
@ ysa ) ) ) ) ) ) ).
thf(conj_2,conjecture,
( product_case_prod @ ( coinductive_llist @ a ) @ e @ ( ( product_prod @ ( coinductive_llist @ b ) @ f ) > $o )
@ ^ [Xs3: coinductive_llist @ a,B2: e] :
( product_case_prod @ ( coinductive_llist @ b ) @ f @ $o
@ ^ [Ys3: coinductive_llist @ b,B6: f] :
( ( coindu1486289336t_all2 @ a @ b @ pa @ Xs3 @ Ys3 )
& ( ( coinductive_lfinite @ a @ Xs3 )
=> ( ra @ B2 @ B6 ) ) ) )
@ ( product_case_prod @ ( coinductive_llist @ a ) @ c @ ( ( c > ( product_prod @ ( coinductive_llist @ a ) @ e ) ) > ( product_prod @ ( coinductive_llist @ a ) @ e ) )
@ ^ [Xs3: coinductive_llist @ a,B2: c,F2: c > ( product_prod @ ( coinductive_llist @ a ) @ e )] : ( product_apfst @ ( coinductive_llist @ a ) @ ( coinductive_llist @ a ) @ e @ ( coinductive_lappend @ a @ Xs3 ) @ ( F2 @ B2 ) )
@ xsa
@ xs_a )
@ ( product_case_prod @ ( coinductive_llist @ b ) @ d @ ( ( d > ( product_prod @ ( coinductive_llist @ b ) @ f ) ) > ( product_prod @ ( coinductive_llist @ b ) @ f ) )
@ ^ [Xs3: coinductive_llist @ b,B2: d,F2: d > ( product_prod @ ( coinductive_llist @ b ) @ f )] : ( product_apfst @ ( coinductive_llist @ b ) @ ( coinductive_llist @ b ) @ f @ ( coinductive_lappend @ b @ Xs3 ) @ ( F2 @ B2 ) )
@ ysa
@ ys_a ) ) ).
%------------------------------------------------------------------------------