% TIMEFORMAT='%3R'; { time (exec 2>&1; /home/martin/bin/satallax -E /home/martin/.isabelle/contrib/e-2.5-1/x86_64-linux/eprover -p tstp -t 5 /home/martin/judgement-day/tptp-thf/tptp/FFT/prob_514__3228942_1 ) ; }
% This file was generated by Isabelle (most likely Sledgehammer)
% 2020-12-16 14:11:50.394

% Could-be-implicit typings (7)
thf(ty_n_t__List__Olist_It__List__Olist_It__Complex__Ocomplex_J_J, type,
    list_list_complex : $tType).
thf(ty_n_t__List__Olist_It__List__Olist_It__Nat__Onat_J_J, type,
    list_list_nat : $tType).
thf(ty_n_t__List__Olist_It__Complex__Ocomplex_J, type,
    list_complex : $tType).
thf(ty_n_t__List__Olist_It__Nat__Onat_J, type,
    list_nat : $tType).
thf(ty_n_t__Complex__Ocomplex, type,
    complex : $tType).
thf(ty_n_t__Num__Onum, type,
    num : $tType).
thf(ty_n_t__Nat__Onat, type,
    nat : $tType).

% Explicit typings (28)
thf(sy_c_FFT__Mirabelle__ulikgskiun_OFFT, type,
    fFT_Mirabelle_FFT : nat > (nat > complex) > nat > complex).
thf(sy_c_Groups_Oone__class_Oone_001t__Nat__Onat, type,
    one_one_nat : nat).
thf(sy_c_Groups_Oplus__class_Oplus_001t__Nat__Onat, type,
    plus_plus_nat : nat > nat > nat).
thf(sy_c_Groups_Oplus__class_Oplus_001t__Num__Onum, type,
    plus_plus_num : num > num > num).
thf(sy_c_Groups_Ozero__class_Ozero_001t__Nat__Onat, type,
    zero_zero_nat : nat).
thf(sy_c_List_Olist_OCons_001t__Complex__Ocomplex, type,
    cons_complex : complex > list_complex > list_complex).
thf(sy_c_List_Olist_OCons_001t__List__Olist_It__Complex__Ocomplex_J, type,
    cons_list_complex : list_complex > list_list_complex > list_list_complex).
thf(sy_c_List_Olist_OCons_001t__List__Olist_It__Nat__Onat_J, type,
    cons_list_nat : list_nat > list_list_nat > list_list_nat).
thf(sy_c_List_Olist_OCons_001t__Nat__Onat, type,
    cons_nat : nat > list_nat > list_nat).
thf(sy_c_List_Olist_ONil_001t__Complex__Ocomplex, type,
    nil_complex : list_complex).
thf(sy_c_List_Olist_ONil_001t__List__Olist_It__Complex__Ocomplex_J, type,
    nil_list_complex : list_list_complex).
thf(sy_c_List_Olist_ONil_001t__List__Olist_It__Nat__Onat_J, type,
    nil_list_nat : list_list_nat).
thf(sy_c_List_Olist_ONil_001t__Nat__Onat, type,
    nil_nat : list_nat).
thf(sy_c_List_Olist_Omap_001t__Complex__Ocomplex_001t__Complex__Ocomplex, type,
    map_complex_complex : (complex > complex) > list_complex > list_complex).
thf(sy_c_List_Olist_Omap_001t__Complex__Ocomplex_001t__Nat__Onat, type,
    map_complex_nat : (complex > nat) > list_complex > list_nat).
thf(sy_c_List_Olist_Omap_001t__Nat__Onat_001t__Complex__Ocomplex, type,
    map_nat_complex : (nat > complex) > list_nat > list_complex).
thf(sy_c_List_Olist_Omap_001t__Nat__Onat_001t__Nat__Onat, type,
    map_nat_nat : (nat > nat) > list_nat > list_nat).
thf(sy_c_List_On__lists_001t__Complex__Ocomplex, type,
    n_lists_complex : nat > list_complex > list_list_complex).
thf(sy_c_List_On__lists_001t__Nat__Onat, type,
    n_lists_nat : nat > list_nat > list_list_nat).
thf(sy_c_List_Oproduct__lists_001t__Complex__Ocomplex, type,
    produc1648077055omplex : list_list_complex > list_list_complex).
thf(sy_c_List_Oproduct__lists_001t__Nat__Onat, type,
    product_lists_nat : list_list_nat > list_list_nat).
thf(sy_c_Nat_OSuc, type,
    suc : nat > nat).
thf(sy_c_Num_Onum_OBit0, type,
    bit0 : num > num).
thf(sy_c_Num_Onum_OBit1, type,
    bit1 : num > num).
thf(sy_c_Num_Onum_OOne, type,
    one : num).
thf(sy_c_Num_Onumeral__class_Onumeral_001t__Nat__Onat, type,
    numeral_numeral_nat : num > nat).
thf(sy_v_a, type,
    a : nat > complex).
thf(sy_v_x__0_058ATP, type,
    x_0_ATP : list_complex).

% Relevant facts (133)
thf(fact_0_FFT_Osimps_I1_J, axiom,
    ((![A : nat > complex]: ((fFT_Mirabelle_FFT @ zero_zero_nat @ A) = A)))). % FFT.simps(1)
thf(fact_1_Suc__1, axiom,
    (((suc @ one_one_nat) = (numeral_numeral_nat @ (bit0 @ one))))). % Suc_1
thf(fact_2_numeral__eq__one__iff, axiom,
    ((![N : num]: (((numeral_numeral_nat @ N) = one_one_nat) = (N = one))))). % numeral_eq_one_iff
thf(fact_3_one__eq__numeral__iff, axiom,
    ((![N : num]: ((one_one_nat = (numeral_numeral_nat @ N)) = (one = N))))). % one_eq_numeral_iff
thf(fact_4_Nil__is__map__conv, axiom,
    ((![F : complex > nat, Xs : list_complex]: ((nil_nat = (map_complex_nat @ F @ Xs)) = (Xs = nil_complex))))). % Nil_is_map_conv
thf(fact_5_Nil__is__map__conv, axiom,
    ((![F : complex > complex, Xs : list_complex]: ((nil_complex = (map_complex_complex @ F @ Xs)) = (Xs = nil_complex))))). % Nil_is_map_conv
thf(fact_6_Nil__is__map__conv, axiom,
    ((![F : nat > nat, Xs : list_nat]: ((nil_nat = (map_nat_nat @ F @ Xs)) = (Xs = nil_nat))))). % Nil_is_map_conv
thf(fact_7_Nil__is__map__conv, axiom,
    ((![F : nat > complex, Xs : list_nat]: ((nil_complex = (map_nat_complex @ F @ Xs)) = (Xs = nil_nat))))). % Nil_is_map_conv
thf(fact_8_map__is__Nil__conv, axiom,
    ((![F : complex > nat, Xs : list_complex]: (((map_complex_nat @ F @ Xs) = nil_nat) = (Xs = nil_complex))))). % map_is_Nil_conv
thf(fact_9_map__is__Nil__conv, axiom,
    ((![F : complex > complex, Xs : list_complex]: (((map_complex_complex @ F @ Xs) = nil_complex) = (Xs = nil_complex))))). % map_is_Nil_conv
thf(fact_10_map__is__Nil__conv, axiom,
    ((![F : nat > nat, Xs : list_nat]: (((map_nat_nat @ F @ Xs) = nil_nat) = (Xs = nil_nat))))). % map_is_Nil_conv
thf(fact_11_map__is__Nil__conv, axiom,
    ((![F : nat > complex, Xs : list_nat]: (((map_nat_complex @ F @ Xs) = nil_complex) = (Xs = nil_nat))))). % map_is_Nil_conv
thf(fact_12_list_Omap__disc__iff, axiom,
    ((![F : complex > nat, A : list_complex]: (((map_complex_nat @ F @ A) = nil_nat) = (A = nil_complex))))). % list.map_disc_iff
thf(fact_13_list_Omap__disc__iff, axiom,
    ((![F : complex > complex, A : list_complex]: (((map_complex_complex @ F @ A) = nil_complex) = (A = nil_complex))))). % list.map_disc_iff
thf(fact_14_list_Omap__disc__iff, axiom,
    ((![F : nat > nat, A : list_nat]: (((map_nat_nat @ F @ A) = nil_nat) = (A = nil_nat))))). % list.map_disc_iff
thf(fact_15_list_Omap__disc__iff, axiom,
    ((![F : nat > complex, A : list_nat]: (((map_nat_complex @ F @ A) = nil_complex) = (A = nil_nat))))). % list.map_disc_iff
thf(fact_16_semiring__norm_I86_J, axiom,
    ((![M : num]: (~ (((bit1 @ M) = one)))))). % semiring_norm(86)
thf(fact_17_semiring__norm_I84_J, axiom,
    ((![N : num]: (~ ((one = (bit1 @ N))))))). % semiring_norm(84)
thf(fact_18_semiring__norm_I89_J, axiom,
    ((![M : num, N : num]: (~ (((bit1 @ M) = (bit0 @ N))))))). % semiring_norm(89)
thf(fact_19_semiring__norm_I88_J, axiom,
    ((![M : num, N : num]: (~ (((bit0 @ M) = (bit1 @ N))))))). % semiring_norm(88)
thf(fact_20_numeral__3__eq__3, axiom,
    (((numeral_numeral_nat @ (bit1 @ one)) = (suc @ (suc @ (suc @ zero_zero_nat)))))). % numeral_3_eq_3
thf(fact_21_numeral__2__eq__2, axiom,
    (((numeral_numeral_nat @ (bit0 @ one)) = (suc @ (suc @ zero_zero_nat))))). % numeral_2_eq_2
thf(fact_22_numeral__eq__iff, axiom,
    ((![M : num, N : num]: (((numeral_numeral_nat @ M) = (numeral_numeral_nat @ N)) = (M = N))))). % numeral_eq_iff
thf(fact_23_semiring__norm_I87_J, axiom,
    ((![M : num, N : num]: (((bit0 @ M) = (bit0 @ N)) = (M = N))))). % semiring_norm(87)
thf(fact_24_list_Oinject, axiom,
    ((![X21 : nat, X22 : list_nat, Y21 : nat, Y22 : list_nat]: (((cons_nat @ X21 @ X22) = (cons_nat @ Y21 @ Y22)) = (((X21 = Y21)) & ((X22 = Y22))))))). % list.inject
thf(fact_25_semiring__norm_I90_J, axiom,
    ((![M : num, N : num]: (((bit1 @ M) = (bit1 @ N)) = (M = N))))). % semiring_norm(90)
thf(fact_26_semiring__norm_I83_J, axiom,
    ((![N : num]: (~ ((one = (bit0 @ N))))))). % semiring_norm(83)
thf(fact_27_semiring__norm_I85_J, axiom,
    ((![M : num]: (~ (((bit0 @ M) = one)))))). % semiring_norm(85)
thf(fact_28_not__Cons__self2, axiom,
    ((![X : nat, Xs : list_nat]: (~ (((cons_nat @ X @ Xs) = Xs)))))). % not_Cons_self2
thf(fact_29_zero__neq__numeral, axiom,
    ((![N : num]: (~ ((zero_zero_nat = (numeral_numeral_nat @ N))))))). % zero_neq_numeral
thf(fact_30_strict__sorted_Oinduct, axiom,
    ((![P : list_nat > $o, A0 : list_nat]: ((P @ nil_nat) => ((![X2 : nat, Ys : list_nat]: ((P @ Ys) => (P @ (cons_nat @ X2 @ Ys)))) => (P @ A0)))))). % strict_sorted.induct
thf(fact_31_strict__sorted_Ocases, axiom,
    ((![X : list_nat]: ((~ ((X = nil_nat))) => (~ ((![X2 : nat, Ys : list_nat]: (~ ((X = (cons_nat @ X2 @ Ys))))))))))). % strict_sorted.cases
thf(fact_32_map__tailrec__rev_Oinduct, axiom,
    ((![P : (complex > nat) > list_complex > list_nat > $o, A0 : complex > nat, A1 : list_complex, A2 : list_nat]: ((![F2 : complex > nat, X_1 : list_nat]: (P @ F2 @ nil_complex @ X_1)) => ((![F2 : complex > nat, A3 : complex, As : list_complex, Bs : list_nat]: ((P @ F2 @ As @ (cons_nat @ (F2 @ A3) @ Bs)) => (P @ F2 @ (cons_complex @ A3 @ As) @ Bs))) => (P @ A0 @ A1 @ A2)))))). % map_tailrec_rev.induct
thf(fact_33_map__tailrec__rev_Oinduct, axiom,
    ((![P : (nat > nat) > list_nat > list_nat > $o, A0 : nat > nat, A1 : list_nat, A2 : list_nat]: ((![F2 : nat > nat, X_1 : list_nat]: (P @ F2 @ nil_nat @ X_1)) => ((![F2 : nat > nat, A3 : nat, As : list_nat, Bs : list_nat]: ((P @ F2 @ As @ (cons_nat @ (F2 @ A3) @ Bs)) => (P @ F2 @ (cons_nat @ A3 @ As) @ Bs))) => (P @ A0 @ A1 @ A2)))))). % map_tailrec_rev.induct
thf(fact_34_list__nonempty__induct, axiom,
    ((![Xs : list_complex, P : list_complex > $o]: ((~ ((Xs = nil_complex))) => ((![X2 : complex]: (P @ (cons_complex @ X2 @ nil_complex))) => ((![X2 : complex, Xs2 : list_complex]: ((~ ((Xs2 = nil_complex))) => ((P @ Xs2) => (P @ (cons_complex @ X2 @ Xs2))))) => (P @ Xs))))))). % list_nonempty_induct
thf(fact_35_list__nonempty__induct, axiom,
    ((![Xs : list_nat, P : list_nat > $o]: ((~ ((Xs = nil_nat))) => ((![X2 : nat]: (P @ (cons_nat @ X2 @ nil_nat))) => ((![X2 : nat, Xs2 : list_nat]: ((~ ((Xs2 = nil_nat))) => ((P @ Xs2) => (P @ (cons_nat @ X2 @ Xs2))))) => (P @ Xs))))))). % list_nonempty_induct
thf(fact_36_successively_Oinduct, axiom,
    ((![P : (complex > complex > $o) > list_complex > $o, A0 : complex > complex > $o, A1 : list_complex]: ((![P2 : complex > complex > $o]: (P @ P2 @ nil_complex)) => ((![P2 : complex > complex > $o, X2 : complex]: (P @ P2 @ (cons_complex @ X2 @ nil_complex))) => ((![P2 : complex > complex > $o, X2 : complex, Y : complex, Xs2 : list_complex]: ((P @ P2 @ (cons_complex @ Y @ Xs2)) => (P @ P2 @ (cons_complex @ X2 @ (cons_complex @ Y @ Xs2))))) => (P @ A0 @ A1))))))). % successively.induct
thf(fact_37_successively_Oinduct, axiom,
    ((![P : (nat > nat > $o) > list_nat > $o, A0 : nat > nat > $o, A1 : list_nat]: ((![P2 : nat > nat > $o]: (P @ P2 @ nil_nat)) => ((![P2 : nat > nat > $o, X2 : nat]: (P @ P2 @ (cons_nat @ X2 @ nil_nat))) => ((![P2 : nat > nat > $o, X2 : nat, Y : nat, Xs2 : list_nat]: ((P @ P2 @ (cons_nat @ Y @ Xs2)) => (P @ P2 @ (cons_nat @ X2 @ (cons_nat @ Y @ Xs2))))) => (P @ A0 @ A1))))))). % successively.induct
thf(fact_38_remdups__adj_Oinduct, axiom,
    ((![P : list_complex > $o, A0 : list_complex]: ((P @ nil_complex) => ((![X2 : complex]: (P @ (cons_complex @ X2 @ nil_complex))) => ((![X2 : complex, Y : complex, Xs2 : list_complex]: (((X2 = Y) => (P @ (cons_complex @ X2 @ Xs2))) => (((~ ((X2 = Y))) => (P @ (cons_complex @ Y @ Xs2))) => (P @ (cons_complex @ X2 @ (cons_complex @ Y @ Xs2)))))) => (P @ A0))))))). % remdups_adj.induct
thf(fact_39_remdups__adj_Oinduct, axiom,
    ((![P : list_nat > $o, A0 : list_nat]: ((P @ nil_nat) => ((![X2 : nat]: (P @ (cons_nat @ X2 @ nil_nat))) => ((![X2 : nat, Y : nat, Xs2 : list_nat]: (((X2 = Y) => (P @ (cons_nat @ X2 @ Xs2))) => (((~ ((X2 = Y))) => (P @ (cons_nat @ Y @ Xs2))) => (P @ (cons_nat @ X2 @ (cons_nat @ Y @ Xs2)))))) => (P @ A0))))))). % remdups_adj.induct
thf(fact_40_sorted__wrt_Oinduct, axiom,
    ((![P : (complex > complex > $o) > list_complex > $o, A0 : complex > complex > $o, A1 : list_complex]: ((![P2 : complex > complex > $o]: (P @ P2 @ nil_complex)) => ((![P2 : complex > complex > $o, X2 : complex, Ys : list_complex]: ((P @ P2 @ Ys) => (P @ P2 @ (cons_complex @ X2 @ Ys)))) => (P @ A0 @ A1)))))). % sorted_wrt.induct
thf(fact_41_sorted__wrt_Oinduct, axiom,
    ((![P : (nat > nat > $o) > list_nat > $o, A0 : nat > nat > $o, A1 : list_nat]: ((![P2 : nat > nat > $o]: (P @ P2 @ nil_nat)) => ((![P2 : nat > nat > $o, X2 : nat, Ys : list_nat]: ((P @ P2 @ Ys) => (P @ P2 @ (cons_nat @ X2 @ Ys)))) => (P @ A0 @ A1)))))). % sorted_wrt.induct
thf(fact_42_remdups__adj_Ocases, axiom,
    ((![X : list_complex]: ((~ ((X = nil_complex))) => ((![X2 : complex]: (~ ((X = (cons_complex @ X2 @ nil_complex))))) => (~ ((![X2 : complex, Y : complex, Xs2 : list_complex]: (~ ((X = (cons_complex @ X2 @ (cons_complex @ Y @ Xs2))))))))))))). % remdups_adj.cases
thf(fact_43_remdups__adj_Ocases, axiom,
    ((![X : list_nat]: ((~ ((X = nil_nat))) => ((![X2 : nat]: (~ ((X = (cons_nat @ X2 @ nil_nat))))) => (~ ((![X2 : nat, Y : nat, Xs2 : list_nat]: (~ ((X = (cons_nat @ X2 @ (cons_nat @ Y @ Xs2))))))))))))). % remdups_adj.cases
thf(fact_44_transpose_Ocases, axiom,
    ((![X : list_list_complex]: ((~ ((X = nil_list_complex))) => ((![Xss : list_list_complex]: (~ ((X = (cons_list_complex @ nil_complex @ Xss))))) => (~ ((![X2 : complex, Xs2 : list_complex, Xss : list_list_complex]: (~ ((X = (cons_list_complex @ (cons_complex @ X2 @ Xs2) @ Xss)))))))))))). % transpose.cases
thf(fact_45_transpose_Ocases, axiom,
    ((![X : list_list_nat]: ((~ ((X = nil_list_nat))) => ((![Xss : list_list_nat]: (~ ((X = (cons_list_nat @ nil_nat @ Xss))))) => (~ ((![X2 : nat, Xs2 : list_nat, Xss : list_list_nat]: (~ ((X = (cons_list_nat @ (cons_nat @ X2 @ Xs2) @ Xss)))))))))))). % transpose.cases
thf(fact_46_shuffles_Oinduct, axiom,
    ((![P : list_complex > list_complex > $o, A0 : list_complex, A1 : list_complex]: ((![X_1 : list_complex]: (P @ nil_complex @ X_1)) => ((![Xs2 : list_complex]: (P @ Xs2 @ nil_complex)) => ((![X2 : complex, Xs2 : list_complex, Y : complex, Ys : list_complex]: ((P @ Xs2 @ (cons_complex @ Y @ Ys)) => ((P @ (cons_complex @ X2 @ Xs2) @ Ys) => (P @ (cons_complex @ X2 @ Xs2) @ (cons_complex @ Y @ Ys))))) => (P @ A0 @ A1))))))). % shuffles.induct
thf(fact_47_shuffles_Oinduct, axiom,
    ((![P : list_nat > list_nat > $o, A0 : list_nat, A1 : list_nat]: ((![X_1 : list_nat]: (P @ nil_nat @ X_1)) => ((![Xs2 : list_nat]: (P @ Xs2 @ nil_nat)) => ((![X2 : nat, Xs2 : list_nat, Y : nat, Ys : list_nat]: ((P @ Xs2 @ (cons_nat @ Y @ Ys)) => ((P @ (cons_nat @ X2 @ Xs2) @ Ys) => (P @ (cons_nat @ X2 @ Xs2) @ (cons_nat @ Y @ Ys))))) => (P @ A0 @ A1))))))). % shuffles.induct
thf(fact_48_min__list_Oinduct, axiom,
    ((![P : list_nat > $o, A0 : list_nat]: ((![X2 : nat, Xs2 : list_nat]: ((![X212 : nat, X222 : list_nat]: ((Xs2 = (cons_nat @ X212 @ X222)) => (P @ Xs2))) => (P @ (cons_nat @ X2 @ Xs2)))) => ((P @ nil_nat) => (P @ A0)))))). % min_list.induct
thf(fact_49_min__list_Ocases, axiom,
    ((![X : list_nat]: ((![X2 : nat, Xs2 : list_nat]: (~ ((X = (cons_nat @ X2 @ Xs2))))) => (X = nil_nat))))). % min_list.cases
thf(fact_50_induct__list012, axiom,
    ((![P : list_complex > $o, Xs : list_complex]: ((P @ nil_complex) => ((![X2 : complex]: (P @ (cons_complex @ X2 @ nil_complex))) => ((![X2 : complex, Y : complex, Zs : list_complex]: ((P @ Zs) => ((P @ (cons_complex @ Y @ Zs)) => (P @ (cons_complex @ X2 @ (cons_complex @ Y @ Zs)))))) => (P @ Xs))))))). % induct_list012
thf(fact_51_induct__list012, axiom,
    ((![P : list_nat > $o, Xs : list_nat]: ((P @ nil_nat) => ((![X2 : nat]: (P @ (cons_nat @ X2 @ nil_nat))) => ((![X2 : nat, Y : nat, Zs : list_nat]: ((P @ Zs) => ((P @ (cons_nat @ Y @ Zs)) => (P @ (cons_nat @ X2 @ (cons_nat @ Y @ Zs)))))) => (P @ Xs))))))). % induct_list012
thf(fact_52_splice_Oinduct, axiom,
    ((![P : list_complex > list_complex > $o, A0 : list_complex, A1 : list_complex]: ((![X_1 : list_complex]: (P @ nil_complex @ X_1)) => ((![X2 : complex, Xs2 : list_complex, Ys : list_complex]: ((P @ Ys @ Xs2) => (P @ (cons_complex @ X2 @ Xs2) @ Ys))) => (P @ A0 @ A1)))))). % splice.induct
thf(fact_53_splice_Oinduct, axiom,
    ((![P : list_nat > list_nat > $o, A0 : list_nat, A1 : list_nat]: ((![X_1 : list_nat]: (P @ nil_nat @ X_1)) => ((![X2 : nat, Xs2 : list_nat, Ys : list_nat]: ((P @ Ys @ Xs2) => (P @ (cons_nat @ X2 @ Xs2) @ Ys))) => (P @ A0 @ A1)))))). % splice.induct
thf(fact_54_list__induct2_H, axiom,
    ((![P : list_complex > list_complex > $o, Xs : list_complex, Ys2 : list_complex]: ((P @ nil_complex @ nil_complex) => ((![X2 : complex, Xs2 : list_complex]: (P @ (cons_complex @ X2 @ Xs2) @ nil_complex)) => ((![Y : complex, Ys : list_complex]: (P @ nil_complex @ (cons_complex @ Y @ Ys))) => ((![X2 : complex, Xs2 : list_complex, Y : complex, Ys : list_complex]: ((P @ Xs2 @ Ys) => (P @ (cons_complex @ X2 @ Xs2) @ (cons_complex @ Y @ Ys)))) => (P @ Xs @ Ys2)))))))). % list_induct2'
thf(fact_55_list__induct2_H, axiom,
    ((![P : list_complex > list_nat > $o, Xs : list_complex, Ys2 : list_nat]: ((P @ nil_complex @ nil_nat) => ((![X2 : complex, Xs2 : list_complex]: (P @ (cons_complex @ X2 @ Xs2) @ nil_nat)) => ((![Y : nat, Ys : list_nat]: (P @ nil_complex @ (cons_nat @ Y @ Ys))) => ((![X2 : complex, Xs2 : list_complex, Y : nat, Ys : list_nat]: ((P @ Xs2 @ Ys) => (P @ (cons_complex @ X2 @ Xs2) @ (cons_nat @ Y @ Ys)))) => (P @ Xs @ Ys2)))))))). % list_induct2'
thf(fact_56_list__induct2_H, axiom,
    ((![P : list_nat > list_complex > $o, Xs : list_nat, Ys2 : list_complex]: ((P @ nil_nat @ nil_complex) => ((![X2 : nat, Xs2 : list_nat]: (P @ (cons_nat @ X2 @ Xs2) @ nil_complex)) => ((![Y : complex, Ys : list_complex]: (P @ nil_nat @ (cons_complex @ Y @ Ys))) => ((![X2 : nat, Xs2 : list_nat, Y : complex, Ys : list_complex]: ((P @ Xs2 @ Ys) => (P @ (cons_nat @ X2 @ Xs2) @ (cons_complex @ Y @ Ys)))) => (P @ Xs @ Ys2)))))))). % list_induct2'
thf(fact_57_list__induct2_H, axiom,
    ((![P : list_nat > list_nat > $o, Xs : list_nat, Ys2 : list_nat]: ((P @ nil_nat @ nil_nat) => ((![X2 : nat, Xs2 : list_nat]: (P @ (cons_nat @ X2 @ Xs2) @ nil_nat)) => ((![Y : nat, Ys : list_nat]: (P @ nil_nat @ (cons_nat @ Y @ Ys))) => ((![X2 : nat, Xs2 : list_nat, Y : nat, Ys : list_nat]: ((P @ Xs2 @ Ys) => (P @ (cons_nat @ X2 @ Xs2) @ (cons_nat @ Y @ Ys)))) => (P @ Xs @ Ys2)))))))). % list_induct2'
thf(fact_58_neq__Nil__conv, axiom,
    ((![Xs : list_complex]: ((~ ((Xs = nil_complex))) = (?[Y2 : complex]: (?[Ys3 : list_complex]: (Xs = (cons_complex @ Y2 @ Ys3)))))))). % neq_Nil_conv
thf(fact_59_neq__Nil__conv, axiom,
    ((![Xs : list_nat]: ((~ ((Xs = nil_nat))) = (?[Y2 : nat]: (?[Ys3 : list_nat]: (Xs = (cons_nat @ Y2 @ Ys3)))))))). % neq_Nil_conv
thf(fact_60_list_Oinducts, axiom,
    ((![P : list_complex > $o, List : list_complex]: ((P @ nil_complex) => ((![X1 : complex, X23 : list_complex]: ((P @ X23) => (P @ (cons_complex @ X1 @ X23)))) => (P @ List)))))). % list.inducts
thf(fact_61_list_Oinducts, axiom,
    ((![P : list_nat > $o, List : list_nat]: ((P @ nil_nat) => ((![X1 : nat, X23 : list_nat]: ((P @ X23) => (P @ (cons_nat @ X1 @ X23)))) => (P @ List)))))). % list.inducts
thf(fact_62_list_Oexhaust, axiom,
    ((![Y3 : list_complex]: ((~ ((Y3 = nil_complex))) => (~ ((![X213 : complex, X223 : list_complex]: (~ ((Y3 = (cons_complex @ X213 @ X223))))))))))). % list.exhaust
thf(fact_63_list_Oexhaust, axiom,
    ((![Y3 : list_nat]: ((~ ((Y3 = nil_nat))) => (~ ((![X213 : nat, X223 : list_nat]: (~ ((Y3 = (cons_nat @ X213 @ X223))))))))))). % list.exhaust
thf(fact_64_list_OdiscI, axiom,
    ((![List : list_complex, X21 : complex, X22 : list_complex]: ((List = (cons_complex @ X21 @ X22)) => (~ ((List = nil_complex))))))). % list.discI
thf(fact_65_list_OdiscI, axiom,
    ((![List : list_nat, X21 : nat, X22 : list_nat]: ((List = (cons_nat @ X21 @ X22)) => (~ ((List = nil_nat))))))). % list.discI
thf(fact_66_list_Odistinct_I1_J, axiom,
    ((![X21 : complex, X22 : list_complex]: (~ ((nil_complex = (cons_complex @ X21 @ X22))))))). % list.distinct(1)
thf(fact_67_list_Odistinct_I1_J, axiom,
    ((![X21 : nat, X22 : list_nat]: (~ ((nil_nat = (cons_nat @ X21 @ X22))))))). % list.distinct(1)
thf(fact_68_map__eq__Cons__conv, axiom,
    ((![F : nat > complex, Xs : list_nat, Y3 : complex, Ys2 : list_complex]: (((map_nat_complex @ F @ Xs) = (cons_complex @ Y3 @ Ys2)) = (?[Z : nat]: (?[Zs2 : list_nat]: (((Xs = (cons_nat @ Z @ Zs2))) & (((((F @ Z) = Y3)) & (((map_nat_complex @ F @ Zs2) = Ys2))))))))))). % map_eq_Cons_conv
thf(fact_69_map__eq__Cons__conv, axiom,
    ((![F : nat > nat, Xs : list_nat, Y3 : nat, Ys2 : list_nat]: (((map_nat_nat @ F @ Xs) = (cons_nat @ Y3 @ Ys2)) = (?[Z : nat]: (?[Zs2 : list_nat]: (((Xs = (cons_nat @ Z @ Zs2))) & (((((F @ Z) = Y3)) & (((map_nat_nat @ F @ Zs2) = Ys2))))))))))). % map_eq_Cons_conv
thf(fact_70_Cons__eq__map__conv, axiom,
    ((![X : complex, Xs : list_complex, F : nat > complex, Ys2 : list_nat]: (((cons_complex @ X @ Xs) = (map_nat_complex @ F @ Ys2)) = (?[Z : nat]: (?[Zs2 : list_nat]: (((Ys2 = (cons_nat @ Z @ Zs2))) & ((((X = (F @ Z))) & ((Xs = (map_nat_complex @ F @ Zs2)))))))))))). % Cons_eq_map_conv
thf(fact_71_Cons__eq__map__conv, axiom,
    ((![X : nat, Xs : list_nat, F : nat > nat, Ys2 : list_nat]: (((cons_nat @ X @ Xs) = (map_nat_nat @ F @ Ys2)) = (?[Z : nat]: (?[Zs2 : list_nat]: (((Ys2 = (cons_nat @ Z @ Zs2))) & ((((X = (F @ Z))) & ((Xs = (map_nat_nat @ F @ Zs2)))))))))))). % Cons_eq_map_conv
thf(fact_72_map__eq__Cons__D, axiom,
    ((![F : nat > complex, Xs : list_nat, Y3 : complex, Ys2 : list_complex]: (((map_nat_complex @ F @ Xs) = (cons_complex @ Y3 @ Ys2)) => (?[Z2 : nat, Zs : list_nat]: ((Xs = (cons_nat @ Z2 @ Zs)) & (((F @ Z2) = Y3) & ((map_nat_complex @ F @ Zs) = Ys2)))))))). % map_eq_Cons_D
thf(fact_73_map__eq__Cons__D, axiom,
    ((![F : nat > nat, Xs : list_nat, Y3 : nat, Ys2 : list_nat]: (((map_nat_nat @ F @ Xs) = (cons_nat @ Y3 @ Ys2)) => (?[Z2 : nat, Zs : list_nat]: ((Xs = (cons_nat @ Z2 @ Zs)) & (((F @ Z2) = Y3) & ((map_nat_nat @ F @ Zs) = Ys2)))))))). % map_eq_Cons_D
thf(fact_74_Cons__eq__map__D, axiom,
    ((![X : complex, Xs : list_complex, F : nat > complex, Ys2 : list_nat]: (((cons_complex @ X @ Xs) = (map_nat_complex @ F @ Ys2)) => (?[Z2 : nat, Zs : list_nat]: ((Ys2 = (cons_nat @ Z2 @ Zs)) & ((X = (F @ Z2)) & (Xs = (map_nat_complex @ F @ Zs))))))))). % Cons_eq_map_D
thf(fact_75_Cons__eq__map__D, axiom,
    ((![X : nat, Xs : list_nat, F : nat > nat, Ys2 : list_nat]: (((cons_nat @ X @ Xs) = (map_nat_nat @ F @ Ys2)) => (?[Z2 : nat, Zs : list_nat]: ((Ys2 = (cons_nat @ Z2 @ Zs)) & ((X = (F @ Z2)) & (Xs = (map_nat_nat @ F @ Zs))))))))). % Cons_eq_map_D
thf(fact_76_list_Osimps_I9_J, axiom,
    ((![F : nat > complex, X21 : nat, X22 : list_nat]: ((map_nat_complex @ F @ (cons_nat @ X21 @ X22)) = (cons_complex @ (F @ X21) @ (map_nat_complex @ F @ X22)))))). % list.simps(9)
thf(fact_77_list_Osimps_I9_J, axiom,
    ((![F : nat > nat, X21 : nat, X22 : list_nat]: ((map_nat_nat @ F @ (cons_nat @ X21 @ X22)) = (cons_nat @ (F @ X21) @ (map_nat_nat @ F @ X22)))))). % list.simps(9)
thf(fact_78_list_Osimps_I8_J, axiom,
    ((![F : complex > nat]: ((map_complex_nat @ F @ nil_complex) = nil_nat)))). % list.simps(8)
thf(fact_79_list_Osimps_I8_J, axiom,
    ((![F : complex > complex]: ((map_complex_complex @ F @ nil_complex) = nil_complex)))). % list.simps(8)
thf(fact_80_list_Osimps_I8_J, axiom,
    ((![F : nat > complex]: ((map_nat_complex @ F @ nil_nat) = nil_complex)))). % list.simps(8)
thf(fact_81_list_Osimps_I8_J, axiom,
    ((![F : nat > nat]: ((map_nat_nat @ F @ nil_nat) = nil_nat)))). % list.simps(8)
thf(fact_82_numeral__One, axiom,
    (((numeral_numeral_nat @ one) = one_one_nat))). % numeral_One
thf(fact_83_num_Oexhaust, axiom,
    ((![Y3 : num]: ((~ ((Y3 = one))) => ((![X23 : num]: (~ ((Y3 = (bit0 @ X23))))) => (~ ((![X3 : num]: (~ ((Y3 = (bit1 @ X3)))))))))))). % num.exhaust
thf(fact_84_num_Oinduct, axiom,
    ((![P : num > $o, Num : num]: ((P @ one) => ((![X2 : num]: ((P @ X2) => (P @ (bit0 @ X2)))) => ((![X2 : num]: ((P @ X2) => (P @ (bit1 @ X2)))) => (P @ Num))))))). % num.induct
thf(fact_85_numerals_I1_J, axiom,
    (((numeral_numeral_nat @ one) = one_one_nat))). % numerals(1)
thf(fact_86_numeral__1__eq__Suc__0, axiom,
    (((numeral_numeral_nat @ one) = (suc @ zero_zero_nat)))). % numeral_1_eq_Suc_0
thf(fact_87_eval__nat__numeral_I3_J, axiom,
    ((![N : num]: ((numeral_numeral_nat @ (bit1 @ N)) = (suc @ (numeral_numeral_nat @ (bit0 @ N))))))). % eval_nat_numeral(3)
thf(fact_88_One__nat__def, axiom,
    ((one_one_nat = (suc @ zero_zero_nat)))). % One_nat_def
thf(fact_89_verit__eq__simplify_I9_J, axiom,
    ((![X32 : num, Y32 : num]: (((bit1 @ X32) = (bit1 @ Y32)) = (X32 = Y32))))). % verit_eq_simplify(9)
thf(fact_90_old_Onat_Oinject, axiom,
    ((![Nat : nat, Nat2 : nat]: (((suc @ Nat) = (suc @ Nat2)) = (Nat = Nat2))))). % old.nat.inject
thf(fact_91_nat_Oinject, axiom,
    ((![X24 : nat, Y23 : nat]: (((suc @ X24) = (suc @ Y23)) = (X24 = Y23))))). % nat.inject
thf(fact_92_verit__eq__simplify_I8_J, axiom,
    ((![X24 : num, Y23 : num]: (((bit0 @ X24) = (bit0 @ Y23)) = (X24 = Y23))))). % verit_eq_simplify(8)
thf(fact_93_zero__reorient, axiom,
    ((![X : nat]: ((zero_zero_nat = X) = (X = zero_zero_nat))))). % zero_reorient
thf(fact_94_one__reorient, axiom,
    ((![X : nat]: ((one_one_nat = X) = (X = one_one_nat))))). % one_reorient
thf(fact_95_Suc__inject, axiom,
    ((![X : nat, Y3 : nat]: (((suc @ X) = (suc @ Y3)) => (X = Y3))))). % Suc_inject
thf(fact_96_n__not__Suc__n, axiom,
    ((![N : nat]: (~ ((N = (suc @ N))))))). % n_not_Suc_n
thf(fact_97_verit__eq__simplify_I10_J, axiom,
    ((![X24 : num]: (~ ((one = (bit0 @ X24))))))). % verit_eq_simplify(10)
thf(fact_98_nat_Odistinct_I1_J, axiom,
    ((![X24 : nat]: (~ ((zero_zero_nat = (suc @ X24))))))). % nat.distinct(1)
thf(fact_99_old_Onat_Odistinct_I2_J, axiom,
    ((![Nat2 : nat]: (~ (((suc @ Nat2) = zero_zero_nat)))))). % old.nat.distinct(2)
thf(fact_100_old_Onat_Odistinct_I1_J, axiom,
    ((![Nat2 : nat]: (~ ((zero_zero_nat = (suc @ Nat2))))))). % old.nat.distinct(1)
thf(fact_101_nat_OdiscI, axiom,
    ((![Nat : nat, X24 : nat]: ((Nat = (suc @ X24)) => (~ ((Nat = zero_zero_nat))))))). % nat.discI
thf(fact_102_nat__induct, axiom,
    ((![P : nat > $o, N : nat]: ((P @ zero_zero_nat) => ((![N2 : nat]: ((P @ N2) => (P @ (suc @ N2)))) => (P @ N)))))). % nat_induct
thf(fact_103_diff__induct, axiom,
    ((![P : nat > nat > $o, M : nat, N : nat]: ((![X2 : nat]: (P @ X2 @ zero_zero_nat)) => ((![Y : nat]: (P @ zero_zero_nat @ (suc @ Y))) => ((![X2 : nat, Y : nat]: ((P @ X2 @ Y) => (P @ (suc @ X2) @ (suc @ Y)))) => (P @ M @ N))))))). % diff_induct
thf(fact_104_zero__induct, axiom,
    ((![P : nat > $o, K : nat]: ((P @ K) => ((![N2 : nat]: ((P @ (suc @ N2)) => (P @ N2))) => (P @ zero_zero_nat)))))). % zero_induct
thf(fact_105_Suc__neq__Zero, axiom,
    ((![M : nat]: (~ (((suc @ M) = zero_zero_nat)))))). % Suc_neq_Zero
thf(fact_106_Zero__neq__Suc, axiom,
    ((![M : nat]: (~ ((zero_zero_nat = (suc @ M))))))). % Zero_neq_Suc
thf(fact_107_Zero__not__Suc, axiom,
    ((![M : nat]: (~ ((zero_zero_nat = (suc @ M))))))). % Zero_not_Suc
thf(fact_108_old_Onat_Oexhaust, axiom,
    ((![Y3 : nat]: ((~ ((Y3 = zero_zero_nat))) => (~ ((![Nat3 : nat]: (~ ((Y3 = (suc @ Nat3))))))))))). % old.nat.exhaust
thf(fact_109_old_Onat_Oinducts, axiom,
    ((![P : nat > $o, Nat : nat]: ((P @ zero_zero_nat) => ((![Nat3 : nat]: ((P @ Nat3) => (P @ (suc @ Nat3)))) => (P @ Nat)))))). % old.nat.inducts
thf(fact_110_not0__implies__Suc, axiom,
    ((![N : nat]: ((~ ((N = zero_zero_nat))) => (?[M2 : nat]: (N = (suc @ M2))))))). % not0_implies_Suc
thf(fact_111_verit__eq__simplify_I14_J, axiom,
    ((![X24 : num, X32 : num]: (~ (((bit0 @ X24) = (bit1 @ X32))))))). % verit_eq_simplify(14)
thf(fact_112_verit__eq__simplify_I12_J, axiom,
    ((![X32 : num]: (~ ((one = (bit1 @ X32))))))). % verit_eq_simplify(12)
thf(fact_113_n__lists__Nil, axiom,
    ((![N : nat]: (((N = zero_zero_nat) => ((n_lists_nat @ N @ nil_nat) = (cons_list_nat @ nil_nat @ nil_list_nat))) & ((~ ((N = zero_zero_nat))) => ((n_lists_nat @ N @ nil_nat) = nil_list_nat)))))). % n_lists_Nil
thf(fact_114_n__lists__Nil, axiom,
    ((![N : nat]: (((N = zero_zero_nat) => ((n_lists_complex @ N @ nil_complex) = (cons_list_complex @ nil_complex @ nil_list_complex))) & ((~ ((N = zero_zero_nat))) => ((n_lists_complex @ N @ nil_complex) = nil_list_complex)))))). % n_lists_Nil
thf(fact_115_n__lists_Osimps_I1_J, axiom,
    ((![Xs : list_nat]: ((n_lists_nat @ zero_zero_nat @ Xs) = (cons_list_nat @ nil_nat @ nil_list_nat))))). % n_lists.simps(1)
thf(fact_116_n__lists_Osimps_I1_J, axiom,
    ((![Xs : list_complex]: ((n_lists_complex @ zero_zero_nat @ Xs) = (cons_list_complex @ nil_complex @ nil_list_complex))))). % n_lists.simps(1)
thf(fact_117_exists__least__lemma, axiom,
    ((![P : nat > $o]: ((~ ((P @ zero_zero_nat))) => ((?[X_12 : nat]: (P @ X_12)) => (?[N2 : nat]: ((~ ((P @ N2))) & (P @ (suc @ N2))))))))). % exists_least_lemma
thf(fact_118_zero__neq__one, axiom,
    ((~ ((zero_zero_nat = one_one_nat))))). % zero_neq_one
thf(fact_119_product__lists_Osimps_I1_J, axiom,
    (((product_lists_nat @ nil_list_nat) = (cons_list_nat @ nil_nat @ nil_list_nat)))). % product_lists.simps(1)
thf(fact_120_product__lists_Osimps_I1_J, axiom,
    (((produc1648077055omplex @ nil_list_complex) = (cons_list_complex @ nil_complex @ nil_list_complex)))). % product_lists.simps(1)
thf(fact_121_add__right__cancel, axiom,
    ((![B : nat, A : nat, C : nat]: (((plus_plus_nat @ B @ A) = (plus_plus_nat @ C @ A)) = (B = C))))). % add_right_cancel
thf(fact_122_add__left__cancel, axiom,
    ((![A : nat, B : nat, C : nat]: (((plus_plus_nat @ A @ B) = (plus_plus_nat @ A @ C)) = (B = C))))). % add_left_cancel
thf(fact_123_semiring__norm_I6_J, axiom,
    ((![M : num, N : num]: ((plus_plus_num @ (bit0 @ M) @ (bit0 @ N)) = (bit0 @ (plus_plus_num @ M @ N)))))). % semiring_norm(6)
thf(fact_124_add__is__0, axiom,
    ((![M : nat, N : nat]: (((plus_plus_nat @ M @ N) = zero_zero_nat) = (((M = zero_zero_nat)) & ((N = zero_zero_nat))))))). % add_is_0
thf(fact_125_Nat_Oadd__0__right, axiom,
    ((![M : nat]: ((plus_plus_nat @ M @ zero_zero_nat) = M)))). % Nat.add_0_right
thf(fact_126_add__Suc__right, axiom,
    ((![M : nat, N : nat]: ((plus_plus_nat @ M @ (suc @ N)) = (suc @ (plus_plus_nat @ M @ N)))))). % add_Suc_right
thf(fact_127_add_Oleft__neutral, axiom,
    ((![A : nat]: ((plus_plus_nat @ zero_zero_nat @ A) = A)))). % add.left_neutral
thf(fact_128_add_Oright__neutral, axiom,
    ((![A : nat]: ((plus_plus_nat @ A @ zero_zero_nat) = A)))). % add.right_neutral
thf(fact_129_add__cancel__left__left, axiom,
    ((![B : nat, A : nat]: (((plus_plus_nat @ B @ A) = A) = (B = zero_zero_nat))))). % add_cancel_left_left
thf(fact_130_add__cancel__left__right, axiom,
    ((![A : nat, B : nat]: (((plus_plus_nat @ A @ B) = A) = (B = zero_zero_nat))))). % add_cancel_left_right
thf(fact_131_add__cancel__right__left, axiom,
    ((![A : nat, B : nat]: ((A = (plus_plus_nat @ B @ A)) = (B = zero_zero_nat))))). % add_cancel_right_left
thf(fact_132_add__cancel__right__right, axiom,
    ((![A : nat, B : nat]: ((A = (plus_plus_nat @ A @ B)) = (B = zero_zero_nat))))). % add_cancel_right_right

% Conjectures (1)
thf(conj_0, conjecture,
    (((map_nat_complex @ (fFT_Mirabelle_FFT @ (suc @ (suc @ zero_zero_nat)) @ a) @ (cons_nat @ zero_zero_nat @ (cons_nat @ one_one_nat @ (cons_nat @ (numeral_numeral_nat @ (bit0 @ one)) @ (cons_nat @ (numeral_numeral_nat @ (bit1 @ one)) @ nil_nat))))) = x_0_ATP))).
