TPTP Problem File: COM200^1.p
View Solutions
- Solve Problem
%------------------------------------------------------------------------------
% File : COM200^1 : TPTP v9.0.0. Released v7.0.0.
% Domain : Computing Theory
% Problem : Koenig's lemma (about infinite trees) 111
% Version : [Bla16] axioms : Especial.
% English :
% Refs : [BH+14] Blanchette et al. (2014), Truly Modular (Co)datatypes
% : [RB15] Reynolds & Blanchette (2015), A Decision Procedure for
% : [Bla16] Blanchette (2016), Email to Geoff Sutcliffe
% Source : [Bla16]
% Names : koenig__111.p [Bla16]
% Status : Theorem
% Rating : 1.00 v7.1.0
% Syntax : Number of formulae : 346 ( 65 unt; 51 typ; 0 def)
% Number of atoms : 854 ( 448 equ; 0 cnn)
% Maximal formula atoms : 9 ( 2 avg)
% Number of connectives : 3456 ( 80 ~; 21 |; 19 &;2960 @)
% ( 0 <=>; 376 =>; 0 <=; 0 <~>)
% Maximal formula depth : 15 ( 6 avg)
% Number of types : 3 ( 2 usr)
% Number of type conns : 80 ( 80 >; 0 *; 0 +; 0 <<)
% Number of symbols : 52 ( 49 usr; 7 con; 0-4 aty)
% Number of variables : 779 ( 20 ^; 719 !; 1 ?; 779 :)
% ( 39 !>; 0 ?*; 0 @-; 0 @+)
% SPC : TH1_THM_EQU_NAR
% Comments : This file was generated by Isabelle (most likely Sledgehammer)
% 2016-07-13 14:38:52.386
%------------------------------------------------------------------------------
%----Could-be-implicit typings (4)
thf(ty_t_Stream_Ostream,type,
stream: $tType > $tType ).
thf(ty_t_Nat_Onat,type,
nat: $tType ).
thf(ty_t_Int_Oint,type,
int: $tType ).
thf(ty_t_itself,type,
itself: $tType > $tType ).
%----Explicit typings (47)
thf(sy_cl_Rings_Odvd,type,
dvd:
!>[A: $tType] : ( ( itself @ A ) > $o ) ).
thf(sy_cl_Groups_Oone,type,
one:
!>[A: $tType] : ( ( itself @ A ) > $o ) ).
thf(sy_cl_Rings_Oidom,type,
idom:
!>[A: $tType] : ( ( itself @ A ) > $o ) ).
thf(sy_cl_Groups_Ozero,type,
zero:
!>[A: $tType] : ( ( itself @ A ) > $o ) ).
thf(sy_cl_Fields_Ofield,type,
field:
!>[A: $tType] : ( ( itself @ A ) > $o ) ).
thf(sy_cl_Rings_Omult__zero,type,
mult_zero:
!>[A: $tType] : ( ( itself @ A ) > $o ) ).
thf(sy_cl_Rings_Osemiring__1,type,
semiring_1:
!>[A: $tType] : ( ( itself @ A ) > $o ) ).
thf(sy_cl_Groups_Omonoid__mult,type,
monoid_mult:
!>[A: $tType] : ( ( itself @ A ) > $o ) ).
thf(sy_cl_Rings_Ozero__neq__one,type,
zero_neq_one:
!>[A: $tType] : ( ( itself @ A ) > $o ) ).
thf(sy_cl_Nat_Osemiring__char__0,type,
semiring_char_0:
!>[A: $tType] : ( ( itself @ A ) > $o ) ).
thf(sy_cl_Divides_Osemiring__div,type,
semiring_div:
!>[A: $tType] : ( ( itself @ A ) > $o ) ).
thf(sy_cl_Fields_Odivision__ring,type,
division_ring:
!>[A: $tType] : ( ( itself @ A ) > $o ) ).
thf(sy_cl_Rings_Osemidom__divide,type,
semidom_divide:
!>[A: $tType] : ( ( itself @ A ) > $o ) ).
thf(sy_cl_Groups_Osemigroup__mult,type,
semigroup_mult:
!>[A: $tType] : ( ( itself @ A ) > $o ) ).
thf(sy_cl_Rings_Ocomm__semiring__1,type,
comm_semiring_1:
!>[A: $tType] : ( ( itself @ A ) > $o ) ).
thf(sy_cl_Fields_Olinordered__field,type,
linordered_field:
!>[A: $tType] : ( ( itself @ A ) > $o ) ).
thf(sy_cl_Groups_Ocomm__monoid__mult,type,
comm_monoid_mult:
!>[A: $tType] : ( ( itself @ A ) > $o ) ).
thf(sy_cl_Rings_Oalgebraic__semidom,type,
algebraic_semidom:
!>[A: $tType] : ( ( itself @ A ) > $o ) ).
thf(sy_cl_Groups_Oab__semigroup__mult,type,
ab_semigroup_mult:
!>[A: $tType] : ( ( itself @ A ) > $o ) ).
thf(sy_cl_Rings_Onormalization__semidom,type,
normal1561407348emidom:
!>[A: $tType] : ( ( itself @ A ) > $o ) ).
thf(sy_cl_Rings_Oring__1__no__zero__divisors,type,
ring_11004092258visors:
!>[A: $tType] : ( ( itself @ A ) > $o ) ).
thf(sy_cl_Rings_Osemiring__no__zero__divisors,type,
semiri1193490041visors:
!>[A: $tType] : ( ( itself @ A ) > $o ) ).
thf(sy_cl_Rings_Osemiring__no__zero__divisors__cancel,type,
semiri1923998003cancel:
!>[A: $tType] : ( ( itself @ A ) > $o ) ).
thf(sy_c_Fields_Oinverse__class_Oinverse,type,
inverse_inverse:
!>[A: $tType] : ( A > A ) ).
thf(sy_c_Groups_Oabel__semigroup,type,
abel_semigroup:
!>[A: $tType] : ( ( A > A > A ) > $o ) ).
thf(sy_c_Groups_Oabel__semigroup__axioms,type,
abel_s1917375468axioms:
!>[A: $tType] : ( ( A > A > A ) > $o ) ).
thf(sy_c_Groups_Oone__class_Oone,type,
one_one:
!>[A: $tType] : A ).
thf(sy_c_Groups_Osemigroup,type,
semigroup:
!>[A: $tType] : ( ( A > A > A ) > $o ) ).
thf(sy_c_Groups_Otimes__class_Otimes,type,
times_times:
!>[A: $tType] : ( A > A > A ) ).
thf(sy_c_Groups_Ozero__class_Ozero,type,
zero_zero:
!>[A: $tType] : A ).
thf(sy_c_If,type,
if:
!>[A: $tType] : ( $o > A > A > A ) ).
thf(sy_c_Koenig__Mirabelle__gyfieiccqy_Ons,type,
koenig_Mirabelle_ns: nat > ( stream @ nat ) ).
thf(sy_c_Koenig__Mirabelle__gyfieiccqy_Oones,type,
koenig973364414e_ones: stream @ nat ).
thf(sy_c_Koenig__Mirabelle__gyfieiccqy_Oplus,type,
koenig1738478187e_plus: ( stream @ nat ) > ( stream @ nat ) > ( stream @ nat ) ).
thf(sy_c_Koenig__Mirabelle__gyfieiccqy_Oscalar,type,
koenig1401075325scalar: nat > ( stream @ nat ) > ( stream @ nat ) ).
thf(sy_c_Koenig__Mirabelle__gyfieiccqy_Otwos,type,
koenig656342648e_twos: stream @ nat ).
thf(sy_c_Nat_Osemiring__1__class_Oof__nat,type,
semiring_1_of_nat:
!>[A: $tType] : ( nat > A ) ).
thf(sy_c_Pure_Otype,type,
type:
!>[A: $tType] : ( itself @ A ) ).
thf(sy_c_Rings_Odivide__class_Odivide,type,
divide_divide:
!>[A: $tType] : ( A > A > A ) ).
thf(sy_c_Rings_Odvd__class_Odvd,type,
dvd_dvd:
!>[A: $tType] : ( A > A > $o ) ).
thf(sy_c_Rings_Onormalization__semidom__class_Onormalize,type,
normal1132893779malize:
!>[A: $tType] : ( A > A ) ).
thf(sy_c_Rings_Onormalization__semidom__class_Ounit__factor,type,
normal627294541factor:
!>[A: $tType] : ( A > A ) ).
thf(sy_c_Rings_Ozero__neq__one__class_Oof__bool,type,
zero_neq_one_of_bool:
!>[A: $tType] : ( $o > A ) ).
thf(sy_c_Stream_Ostream_Ostl,type,
stl:
!>[A: $tType] : ( ( stream @ A ) > ( stream @ A ) ) ).
thf(sy_v_m,type,
m: nat ).
thf(sy_v_n,type,
n: nat ).
thf(sy_v_xs,type,
xs: stream @ nat ).
%----Relevant facts (253)
thf(fact_0_ns__def,axiom,
( koenig_Mirabelle_ns
= ( ^ [N: nat] : ( koenig1401075325scalar @ N @ koenig973364414e_ones ) ) ) ).
% ns_def
thf(fact_1_ab__semigroup__mult__class_Omult__ac_I1_J,axiom,
! [A: $tType] :
( ( ab_semigroup_mult @ A @ ( type @ A ) )
=> ! [A2: A,B: A,C: A] :
( ( times_times @ A @ ( times_times @ A @ A2 @ B ) @ C )
= ( times_times @ A @ A2 @ ( times_times @ A @ B @ C ) ) ) ) ).
% ab_semigroup_mult_class.mult_ac(1)
thf(fact_2_linordered__field__class_Osign__simps_I25_J,axiom,
! [A: $tType] :
( ( linordered_field @ A @ ( type @ A ) )
=> ! [B: A,A2: A,C: A] :
( ( times_times @ A @ B @ ( times_times @ A @ A2 @ C ) )
= ( times_times @ A @ A2 @ ( times_times @ A @ B @ C ) ) ) ) ).
% linordered_field_class.sign_simps(25)
thf(fact_3_linordered__field__class_Osign__simps_I24_J,axiom,
! [A: $tType] :
( ( linordered_field @ A @ ( type @ A ) )
=> ( ( times_times @ A )
= ( ^ [A3: A,B2: A] : ( times_times @ A @ B2 @ A3 ) ) ) ) ).
% linordered_field_class.sign_simps(24)
thf(fact_4_linordered__field__class_Osign__simps_I23_J,axiom,
! [A: $tType] :
( ( linordered_field @ A @ ( type @ A ) )
=> ! [A2: A,B: A,C: A] :
( ( times_times @ A @ ( times_times @ A @ A2 @ B ) @ C )
= ( times_times @ A @ A2 @ ( times_times @ A @ B @ C ) ) ) ) ).
% linordered_field_class.sign_simps(23)
thf(fact_5_semiring__normalization__rules_I19_J,axiom,
! [A: $tType] :
( ( comm_semiring_1 @ A @ ( type @ A ) )
=> ! [Lx: A,Rx: A,Ry: A] :
( ( times_times @ A @ Lx @ ( times_times @ A @ Rx @ Ry ) )
= ( times_times @ A @ Rx @ ( times_times @ A @ Lx @ Ry ) ) ) ) ).
% semiring_normalization_rules(19)
thf(fact_6_semiring__normalization__rules_I18_J,axiom,
! [A: $tType] :
( ( comm_semiring_1 @ A @ ( type @ A ) )
=> ! [Lx: A,Rx: A,Ry: A] :
( ( times_times @ A @ Lx @ ( times_times @ A @ Rx @ Ry ) )
= ( times_times @ A @ ( times_times @ A @ Lx @ Rx ) @ Ry ) ) ) ).
% semiring_normalization_rules(18)
thf(fact_7_semiring__normalization__rules_I17_J,axiom,
! [A: $tType] :
( ( comm_semiring_1 @ A @ ( type @ A ) )
=> ! [Lx: A,Ly: A,Rx: A] :
( ( times_times @ A @ ( times_times @ A @ Lx @ Ly ) @ Rx )
= ( times_times @ A @ Lx @ ( times_times @ A @ Ly @ Rx ) ) ) ) ).
% semiring_normalization_rules(17)
thf(fact_8_semiring__normalization__rules_I16_J,axiom,
! [A: $tType] :
( ( comm_semiring_1 @ A @ ( type @ A ) )
=> ! [Lx: A,Ly: A,Rx: A] :
( ( times_times @ A @ ( times_times @ A @ Lx @ Ly ) @ Rx )
= ( times_times @ A @ ( times_times @ A @ Lx @ Rx ) @ Ly ) ) ) ).
% semiring_normalization_rules(16)
thf(fact_9_semiring__normalization__rules_I15_J,axiom,
! [A: $tType] :
( ( comm_semiring_1 @ A @ ( type @ A ) )
=> ! [Lx: A,Ly: A,Rx: A,Ry: A] :
( ( times_times @ A @ ( times_times @ A @ Lx @ Ly ) @ ( times_times @ A @ Rx @ Ry ) )
= ( times_times @ A @ Rx @ ( times_times @ A @ ( times_times @ A @ Lx @ Ly ) @ Ry ) ) ) ) ).
% semiring_normalization_rules(15)
thf(fact_10_semiring__normalization__rules_I14_J,axiom,
! [A: $tType] :
( ( comm_semiring_1 @ A @ ( type @ A ) )
=> ! [Lx: A,Ly: A,Rx: A,Ry: A] :
( ( times_times @ A @ ( times_times @ A @ Lx @ Ly ) @ ( times_times @ A @ Rx @ Ry ) )
= ( times_times @ A @ Lx @ ( times_times @ A @ Ly @ ( times_times @ A @ Rx @ Ry ) ) ) ) ) ).
% semiring_normalization_rules(14)
thf(fact_11_semiring__normalization__rules_I13_J,axiom,
! [A: $tType] :
( ( comm_semiring_1 @ A @ ( type @ A ) )
=> ! [Lx: A,Ly: A,Rx: A,Ry: A] :
( ( times_times @ A @ ( times_times @ A @ Lx @ Ly ) @ ( times_times @ A @ Rx @ Ry ) )
= ( times_times @ A @ ( times_times @ A @ Lx @ Rx ) @ ( times_times @ A @ Ly @ Ry ) ) ) ) ).
% semiring_normalization_rules(13)
thf(fact_12_mult_Oleft__commute,axiom,
! [A: $tType] :
( ( ab_semigroup_mult @ A @ ( type @ A ) )
=> ! [B: A,A2: A,C: A] :
( ( times_times @ A @ B @ ( times_times @ A @ A2 @ C ) )
= ( times_times @ A @ A2 @ ( times_times @ A @ B @ C ) ) ) ) ).
% mult.left_commute
thf(fact_13_mult_Ocommute,axiom,
! [A: $tType] :
( ( ab_semigroup_mult @ A @ ( type @ A ) )
=> ( ( times_times @ A )
= ( ^ [A3: A,B2: A] : ( times_times @ A @ B2 @ A3 ) ) ) ) ).
% mult.commute
thf(fact_14_mult_Oassoc,axiom,
! [A: $tType] :
( ( semigroup_mult @ A @ ( type @ A ) )
=> ! [A2: A,B: A,C: A] :
( ( times_times @ A @ ( times_times @ A @ A2 @ B ) @ C )
= ( times_times @ A @ A2 @ ( times_times @ A @ B @ C ) ) ) ) ).
% mult.assoc
thf(fact_15_semiring__normalization__rules_I7_J,axiom,
! [A: $tType] :
( ( comm_semiring_1 @ A @ ( type @ A ) )
=> ( ( times_times @ A )
= ( ^ [A3: A,B2: A] : ( times_times @ A @ B2 @ A3 ) ) ) ) ).
% semiring_normalization_rules(7)
thf(fact_16_mult_Oabel__semigroup__axioms,axiom,
! [A: $tType] :
( ( ab_semigroup_mult @ A @ ( type @ A ) )
=> ( abel_semigroup @ A @ ( times_times @ A ) ) ) ).
% mult.abel_semigroup_axioms
thf(fact_17_mult_Osemigroup__axioms,axiom,
! [A: $tType] :
( ( semigroup_mult @ A @ ( type @ A ) )
=> ( semigroup @ A @ ( times_times @ A ) ) ) ).
% mult.semigroup_axioms
thf(fact_18_ones_Osimps_I2_J,axiom,
( ( stl @ nat @ koenig973364414e_ones )
= koenig973364414e_ones ) ).
% ones.simps(2)
thf(fact_19_of__nat__mult,axiom,
! [A: $tType] :
( ( semiring_1 @ A @ ( type @ A ) )
=> ! [M: nat,N2: nat] :
( ( semiring_1_of_nat @ A @ ( times_times @ nat @ M @ N2 ) )
= ( times_times @ A @ ( semiring_1_of_nat @ A @ M ) @ ( semiring_1_of_nat @ A @ N2 ) ) ) ) ).
% of_nat_mult
thf(fact_20_mult_Oright__neutral,axiom,
! [A: $tType] :
( ( monoid_mult @ A @ ( type @ A ) )
=> ! [A2: A] :
( ( times_times @ A @ A2 @ ( one_one @ A ) )
= A2 ) ) ).
% mult.right_neutral
thf(fact_21_mult_Oleft__neutral,axiom,
! [A: $tType] :
( ( monoid_mult @ A @ ( type @ A ) )
=> ! [A2: A] :
( ( times_times @ A @ ( one_one @ A ) @ A2 )
= A2 ) ) ).
% mult.left_neutral
thf(fact_22_times__divide__eq__right,axiom,
! [A: $tType] :
( ( division_ring @ A @ ( type @ A ) )
=> ! [A2: A,B: A,C: A] :
( ( times_times @ A @ A2 @ ( divide_divide @ A @ B @ C ) )
= ( divide_divide @ A @ ( times_times @ A @ A2 @ B ) @ C ) ) ) ).
% times_divide_eq_right
thf(fact_23_divide__divide__eq__right,axiom,
! [A: $tType] :
( ( field @ A @ ( type @ A ) )
=> ! [A2: A,B: A,C: A] :
( ( divide_divide @ A @ A2 @ ( divide_divide @ A @ B @ C ) )
= ( divide_divide @ A @ ( times_times @ A @ A2 @ C ) @ B ) ) ) ).
% divide_divide_eq_right
thf(fact_24_divide__divide__eq__left,axiom,
! [A: $tType] :
( ( field @ A @ ( type @ A ) )
=> ! [A2: A,B: A,C: A] :
( ( divide_divide @ A @ ( divide_divide @ A @ A2 @ B ) @ C )
= ( divide_divide @ A @ A2 @ ( times_times @ A @ B @ C ) ) ) ) ).
% divide_divide_eq_left
thf(fact_25_times__divide__eq__left,axiom,
! [A: $tType] :
( ( field @ A @ ( type @ A ) )
=> ! [B: A,C: A,A2: A] :
( ( times_times @ A @ ( divide_divide @ A @ B @ C ) @ A2 )
= ( divide_divide @ A @ ( times_times @ A @ B @ A2 ) @ C ) ) ) ).
% times_divide_eq_left
thf(fact_26_inverse__mult__distrib,axiom,
! [A: $tType] :
( ( field @ A @ ( type @ A ) )
=> ! [A2: A,B: A] :
( ( inverse_inverse @ A @ ( times_times @ A @ A2 @ B ) )
= ( times_times @ A @ ( inverse_inverse @ A @ A2 ) @ ( inverse_inverse @ A @ B ) ) ) ) ).
% inverse_mult_distrib
thf(fact_27_of__nat__eq__iff,axiom,
! [A: $tType] :
( ( semiring_char_0 @ A @ ( type @ A ) )
=> ! [M: nat,N2: nat] :
( ( ( semiring_1_of_nat @ A @ M )
= ( semiring_1_of_nat @ A @ N2 ) )
= ( M = N2 ) ) ) ).
% of_nat_eq_iff
thf(fact_28_nat__1__eq__mult__iff,axiom,
! [M: nat,N2: nat] :
( ( ( one_one @ nat )
= ( times_times @ nat @ M @ N2 ) )
= ( ( M
= ( one_one @ nat ) )
& ( N2
= ( one_one @ nat ) ) ) ) ).
% nat_1_eq_mult_iff
thf(fact_29_nat__mult__eq__1__iff,axiom,
! [M: nat,N2: nat] :
( ( ( times_times @ nat @ M @ N2 )
= ( one_one @ nat ) )
= ( ( M
= ( one_one @ nat ) )
& ( N2
= ( one_one @ nat ) ) ) ) ).
% nat_mult_eq_1_iff
thf(fact_30_inverse__eq__iff__eq,axiom,
! [A: $tType] :
( ( division_ring @ A @ ( type @ A ) )
=> ! [A2: A,B: A] :
( ( ( inverse_inverse @ A @ A2 )
= ( inverse_inverse @ A @ B ) )
= ( A2 = B ) ) ) ).
% inverse_eq_iff_eq
thf(fact_31_inverse__inverse__eq,axiom,
! [A: $tType] :
( ( division_ring @ A @ ( type @ A ) )
=> ! [A2: A] :
( ( inverse_inverse @ A @ ( inverse_inverse @ A @ A2 ) )
= A2 ) ) ).
% inverse_inverse_eq
thf(fact_32_of__nat__1,axiom,
! [A: $tType] :
( ( semiring_1 @ A @ ( type @ A ) )
=> ( ( semiring_1_of_nat @ A @ ( one_one @ nat ) )
= ( one_one @ A ) ) ) ).
% of_nat_1
thf(fact_33_inverse__eq__1__iff,axiom,
! [A: $tType] :
( ( field @ A @ ( type @ A ) )
=> ! [X: A] :
( ( ( inverse_inverse @ A @ X )
= ( one_one @ A ) )
= ( X
= ( one_one @ A ) ) ) ) ).
% inverse_eq_1_iff
thf(fact_34_inverse__1,axiom,
! [A: $tType] :
( ( division_ring @ A @ ( type @ A ) )
=> ( ( inverse_inverse @ A @ ( one_one @ A ) )
= ( one_one @ A ) ) ) ).
% inverse_1
thf(fact_35_inverse__divide,axiom,
! [A: $tType] :
( ( field @ A @ ( type @ A ) )
=> ! [A2: A,B: A] :
( ( inverse_inverse @ A @ ( divide_divide @ A @ A2 @ B ) )
= ( divide_divide @ A @ B @ A2 ) ) ) ).
% inverse_divide
thf(fact_36_abel__semigroup_Oaxioms_I1_J,axiom,
! [A: $tType,F: A > A > A] :
( ( abel_semigroup @ A @ F )
=> ( semigroup @ A @ F ) ) ).
% abel_semigroup.axioms(1)
thf(fact_37_one__reorient,axiom,
! [A: $tType] :
( ( one @ A @ ( type @ A ) )
=> ! [X: A] :
( ( ( one_one @ A )
= X )
= ( X
= ( one_one @ A ) ) ) ) ).
% one_reorient
thf(fact_38_semigroup__def,axiom,
! [A: $tType] :
( ( semigroup @ A )
= ( ^ [F2: A > A > A] :
! [A3: A,B2: A,C2: A] :
( ( F2 @ ( F2 @ A3 @ B2 ) @ C2 )
= ( F2 @ A3 @ ( F2 @ B2 @ C2 ) ) ) ) ) ).
% semigroup_def
thf(fact_39_semigroup_Oassoc,axiom,
! [A: $tType,F: A > A > A,A2: A,B: A,C: A] :
( ( semigroup @ A @ F )
=> ( ( F @ ( F @ A2 @ B ) @ C )
= ( F @ A2 @ ( F @ B @ C ) ) ) ) ).
% semigroup.assoc
thf(fact_40_semigroup_Ointro,axiom,
! [A: $tType,F: A > A > A] :
( ! [A4: A,B3: A,C3: A] :
( ( F @ ( F @ A4 @ B3 ) @ C3 )
= ( F @ A4 @ ( F @ B3 @ C3 ) ) )
=> ( semigroup @ A @ F ) ) ).
% semigroup.intro
thf(fact_41_abel__semigroup_Ocommute,axiom,
! [A: $tType,F: A > A > A,A2: A,B: A] :
( ( abel_semigroup @ A @ F )
=> ( ( F @ A2 @ B )
= ( F @ B @ A2 ) ) ) ).
% abel_semigroup.commute
thf(fact_42_abel__semigroup_Oleft__commute,axiom,
! [A: $tType,F: A > A > A,B: A,A2: A,C: A] :
( ( abel_semigroup @ A @ F )
=> ( ( F @ B @ ( F @ A2 @ C ) )
= ( F @ A2 @ ( F @ B @ C ) ) ) ) ).
% abel_semigroup.left_commute
thf(fact_43_field__class_Ofield__divide__inverse,axiom,
! [A: $tType] :
( ( field @ A @ ( type @ A ) )
=> ( ( divide_divide @ A )
= ( ^ [A3: A,B2: A] : ( times_times @ A @ A3 @ ( inverse_inverse @ A @ B2 ) ) ) ) ) ).
% field_class.field_divide_inverse
thf(fact_44_ext,axiom,
! [B4: $tType,A: $tType,F: A > B4,G: A > B4] :
( ! [X2: A] :
( ( F @ X2 )
= ( G @ X2 ) )
=> ( F = G ) ) ).
% ext
thf(fact_45_divide__inverse,axiom,
! [A: $tType] :
( ( division_ring @ A @ ( type @ A ) )
=> ( ( divide_divide @ A )
= ( ^ [A3: A,B2: A] : ( times_times @ A @ A3 @ ( inverse_inverse @ A @ B2 ) ) ) ) ) ).
% divide_inverse
thf(fact_46_divide__inverse__commute,axiom,
! [A: $tType] :
( ( field @ A @ ( type @ A ) )
=> ( ( divide_divide @ A )
= ( ^ [A3: A,B2: A] : ( times_times @ A @ ( inverse_inverse @ A @ B2 ) @ A3 ) ) ) ) ).
% divide_inverse_commute
thf(fact_47_inverse__eq__divide,axiom,
! [A: $tType] :
( ( division_ring @ A @ ( type @ A ) )
=> ( ( inverse_inverse @ A )
= ( divide_divide @ A @ ( one_one @ A ) ) ) ) ).
% inverse_eq_divide
thf(fact_48_inverse__eq__imp__eq,axiom,
! [A: $tType] :
( ( division_ring @ A @ ( type @ A ) )
=> ! [A2: A,B: A] :
( ( ( inverse_inverse @ A @ A2 )
= ( inverse_inverse @ A @ B ) )
=> ( A2 = B ) ) ) ).
% inverse_eq_imp_eq
thf(fact_49_inverse__unique,axiom,
! [A: $tType] :
( ( division_ring @ A @ ( type @ A ) )
=> ! [A2: A,B: A] :
( ( ( times_times @ A @ A2 @ B )
= ( one_one @ A ) )
=> ( ( inverse_inverse @ A @ A2 )
= B ) ) ) ).
% inverse_unique
thf(fact_50_mult__of__nat__commute,axiom,
! [A: $tType] :
( ( semiring_1 @ A @ ( type @ A ) )
=> ! [X: nat,Y: A] :
( ( times_times @ A @ ( semiring_1_of_nat @ A @ X ) @ Y )
= ( times_times @ A @ Y @ ( semiring_1_of_nat @ A @ X ) ) ) ) ).
% mult_of_nat_commute
thf(fact_51_nat__mult__1,axiom,
! [N2: nat] :
( ( times_times @ nat @ ( one_one @ nat ) @ N2 )
= N2 ) ).
% nat_mult_1
thf(fact_52_nat__mult__1__right,axiom,
! [N2: nat] :
( ( times_times @ nat @ N2 @ ( one_one @ nat ) )
= N2 ) ).
% nat_mult_1_right
thf(fact_53_times__divide__times__eq,axiom,
! [A: $tType] :
( ( field @ A @ ( type @ A ) )
=> ! [X: A,Y: A,Z: A,W: A] :
( ( times_times @ A @ ( divide_divide @ A @ X @ Y ) @ ( divide_divide @ A @ Z @ W ) )
= ( divide_divide @ A @ ( times_times @ A @ X @ Z ) @ ( times_times @ A @ Y @ W ) ) ) ) ).
% times_divide_times_eq
thf(fact_54_divide__divide__times__eq,axiom,
! [A: $tType] :
( ( field @ A @ ( type @ A ) )
=> ! [X: A,Y: A,Z: A,W: A] :
( ( divide_divide @ A @ ( divide_divide @ A @ X @ Y ) @ ( divide_divide @ A @ Z @ W ) )
= ( divide_divide @ A @ ( times_times @ A @ X @ W ) @ ( times_times @ A @ Y @ Z ) ) ) ) ).
% divide_divide_times_eq
thf(fact_55_semiring__normalization__rules_I12_J,axiom,
! [A: $tType] :
( ( comm_semiring_1 @ A @ ( type @ A ) )
=> ! [A2: A] :
( ( times_times @ A @ A2 @ ( one_one @ A ) )
= A2 ) ) ).
% semiring_normalization_rules(12)
thf(fact_56_semiring__normalization__rules_I11_J,axiom,
! [A: $tType] :
( ( comm_semiring_1 @ A @ ( type @ A ) )
=> ! [A2: A] :
( ( times_times @ A @ ( one_one @ A ) @ A2 )
= A2 ) ) ).
% semiring_normalization_rules(11)
thf(fact_57_comm__monoid__mult__class_Omult__1,axiom,
! [A: $tType] :
( ( comm_monoid_mult @ A @ ( type @ A ) )
=> ! [A2: A] :
( ( times_times @ A @ ( one_one @ A ) @ A2 )
= A2 ) ) ).
% comm_monoid_mult_class.mult_1
thf(fact_58_mult_Ocomm__neutral,axiom,
! [A: $tType] :
( ( comm_monoid_mult @ A @ ( type @ A ) )
=> ! [A2: A] :
( ( times_times @ A @ A2 @ ( one_one @ A ) )
= A2 ) ) ).
% mult.comm_neutral
thf(fact_59_divide__1,axiom,
! [A: $tType] :
( ( semidom_divide @ A @ ( type @ A ) )
=> ! [A2: A] :
( ( divide_divide @ A @ A2 @ ( one_one @ A ) )
= A2 ) ) ).
% divide_1
thf(fact_60_div__by__1,axiom,
! [A: $tType] :
( ( semiring_div @ A @ ( type @ A ) )
=> ! [A2: A] :
( ( divide_divide @ A @ A2 @ ( one_one @ A ) )
= A2 ) ) ).
% div_by_1
thf(fact_61_abel__semigroup__def,axiom,
! [A: $tType] :
( ( abel_semigroup @ A )
= ( ^ [F2: A > A > A] :
( ( semigroup @ A @ F2 )
& ( abel_s1917375468axioms @ A @ F2 ) ) ) ) ).
% abel_semigroup_def
thf(fact_62_abel__semigroup_Ointro,axiom,
! [A: $tType,F: A > A > A] :
( ( semigroup @ A @ F )
=> ( ( abel_s1917375468axioms @ A @ F )
=> ( abel_semigroup @ A @ F ) ) ) ).
% abel_semigroup.intro
thf(fact_63_twos_Osimps_I2_J,axiom,
( ( stl @ nat @ koenig656342648e_twos )
= koenig656342648e_twos ) ).
% twos.simps(2)
thf(fact_64_left__inverse,axiom,
! [A: $tType] :
( ( division_ring @ A @ ( type @ A ) )
=> ! [A2: A] :
( ( A2
!= ( zero_zero @ A ) )
=> ( ( times_times @ A @ ( inverse_inverse @ A @ A2 ) @ A2 )
= ( one_one @ A ) ) ) ) ).
% left_inverse
thf(fact_65_right__inverse,axiom,
! [A: $tType] :
( ( division_ring @ A @ ( type @ A ) )
=> ! [A2: A] :
( ( A2
!= ( zero_zero @ A ) )
=> ( ( times_times @ A @ A2 @ ( inverse_inverse @ A @ A2 ) )
= ( one_one @ A ) ) ) ) ).
% right_inverse
thf(fact_66_plus_Osimps_I2_J,axiom,
! [Xs: stream @ nat,Ys: stream @ nat] :
( ( stl @ nat @ ( koenig1738478187e_plus @ Xs @ Ys ) )
= ( koenig1738478187e_plus @ ( stl @ nat @ Xs ) @ ( stl @ nat @ Ys ) ) ) ).
% plus.simps(2)
thf(fact_67_nonzero__divide__mult__cancel__left,axiom,
! [A: $tType] :
( ( field @ A @ ( type @ A ) )
=> ! [A2: A,B: A] :
( ( A2
!= ( zero_zero @ A ) )
=> ( ( divide_divide @ A @ A2 @ ( times_times @ A @ A2 @ B ) )
= ( divide_divide @ A @ ( one_one @ A ) @ B ) ) ) ) ).
% nonzero_divide_mult_cancel_left
thf(fact_68_mult__cancel2,axiom,
! [M: nat,K: nat,N2: nat] :
( ( ( times_times @ nat @ M @ K )
= ( times_times @ nat @ N2 @ K ) )
= ( ( M = N2 )
| ( K
= ( zero_zero @ nat ) ) ) ) ).
% mult_cancel2
thf(fact_69_mult__cancel1,axiom,
! [K: nat,M: nat,N2: nat] :
( ( ( times_times @ nat @ K @ M )
= ( times_times @ nat @ K @ N2 ) )
= ( ( M = N2 )
| ( K
= ( zero_zero @ nat ) ) ) ) ).
% mult_cancel1
thf(fact_70_mult__0__right,axiom,
! [M: nat] :
( ( times_times @ nat @ M @ ( zero_zero @ nat ) )
= ( zero_zero @ nat ) ) ).
% mult_0_right
thf(fact_71_mult__is__0,axiom,
! [M: nat,N2: nat] :
( ( ( times_times @ nat @ M @ N2 )
= ( zero_zero @ nat ) )
= ( ( M
= ( zero_zero @ nat ) )
| ( N2
= ( zero_zero @ nat ) ) ) ) ).
% mult_is_0
thf(fact_72_mult__cancel__right,axiom,
! [A: $tType] :
( ( semiri1923998003cancel @ A @ ( type @ A ) )
=> ! [A2: A,C: A,B: A] :
( ( ( times_times @ A @ A2 @ C )
= ( times_times @ A @ B @ C ) )
= ( ( C
= ( zero_zero @ A ) )
| ( A2 = B ) ) ) ) ).
% mult_cancel_right
thf(fact_73_mult__cancel__left,axiom,
! [A: $tType] :
( ( semiri1923998003cancel @ A @ ( type @ A ) )
=> ! [C: A,A2: A,B: A] :
( ( ( times_times @ A @ C @ A2 )
= ( times_times @ A @ C @ B ) )
= ( ( C
= ( zero_zero @ A ) )
| ( A2 = B ) ) ) ) ).
% mult_cancel_left
thf(fact_74_mult__eq__0__iff,axiom,
! [A: $tType] :
( ( semiri1193490041visors @ A @ ( type @ A ) )
=> ! [A2: A,B: A] :
( ( ( times_times @ A @ A2 @ B )
= ( zero_zero @ A ) )
= ( ( A2
= ( zero_zero @ A ) )
| ( B
= ( zero_zero @ A ) ) ) ) ) ).
% mult_eq_0_iff
thf(fact_75_mult__zero__right,axiom,
! [A: $tType] :
( ( mult_zero @ A @ ( type @ A ) )
=> ! [A2: A] :
( ( times_times @ A @ A2 @ ( zero_zero @ A ) )
= ( zero_zero @ A ) ) ) ).
% mult_zero_right
thf(fact_76_mult__zero__left,axiom,
! [A: $tType] :
( ( mult_zero @ A @ ( type @ A ) )
=> ! [A2: A] :
( ( times_times @ A @ ( zero_zero @ A ) @ A2 )
= ( zero_zero @ A ) ) ) ).
% mult_zero_left
thf(fact_77_div__0,axiom,
! [A: $tType] :
( ( semiring_div @ A @ ( type @ A ) )
=> ! [A2: A] :
( ( divide_divide @ A @ ( zero_zero @ A ) @ A2 )
= ( zero_zero @ A ) ) ) ).
% div_0
thf(fact_78_div__by__0,axiom,
! [A: $tType] :
( ( semiring_div @ A @ ( type @ A ) )
=> ! [A2: A] :
( ( divide_divide @ A @ A2 @ ( zero_zero @ A ) )
= ( zero_zero @ A ) ) ) ).
% div_by_0
thf(fact_79_divide__zero,axiom,
! [A: $tType] :
( ( semidom_divide @ A @ ( type @ A ) )
=> ! [A2: A] :
( ( divide_divide @ A @ A2 @ ( zero_zero @ A ) )
= ( zero_zero @ A ) ) ) ).
% divide_zero
thf(fact_80_divide__zero__left,axiom,
! [A: $tType] :
( ( semidom_divide @ A @ ( type @ A ) )
=> ! [A2: A] :
( ( divide_divide @ A @ ( zero_zero @ A ) @ A2 )
= ( zero_zero @ A ) ) ) ).
% divide_zero_left
thf(fact_81_division__ring__divide__zero,axiom,
! [A: $tType] :
( ( division_ring @ A @ ( type @ A ) )
=> ! [A2: A] :
( ( divide_divide @ A @ A2 @ ( zero_zero @ A ) )
= ( zero_zero @ A ) ) ) ).
% division_ring_divide_zero
thf(fact_82_divide__cancel__right,axiom,
! [A: $tType] :
( ( field @ A @ ( type @ A ) )
=> ! [A2: A,C: A,B: A] :
( ( ( divide_divide @ A @ A2 @ C )
= ( divide_divide @ A @ B @ C ) )
= ( ( C
= ( zero_zero @ A ) )
| ( A2 = B ) ) ) ) ).
% divide_cancel_right
thf(fact_83_divide__cancel__left,axiom,
! [A: $tType] :
( ( field @ A @ ( type @ A ) )
=> ! [C: A,A2: A,B: A] :
( ( ( divide_divide @ A @ C @ A2 )
= ( divide_divide @ A @ C @ B ) )
= ( ( C
= ( zero_zero @ A ) )
| ( A2 = B ) ) ) ) ).
% divide_cancel_left
thf(fact_84_divide__eq__0__iff,axiom,
! [A: $tType] :
( ( field @ A @ ( type @ A ) )
=> ! [A2: A,B: A] :
( ( ( divide_divide @ A @ A2 @ B )
= ( zero_zero @ A ) )
= ( ( A2
= ( zero_zero @ A ) )
| ( B
= ( zero_zero @ A ) ) ) ) ) ).
% divide_eq_0_iff
thf(fact_85_of__nat__0,axiom,
! [A: $tType] :
( ( semiring_1 @ A @ ( type @ A ) )
=> ( ( semiring_1_of_nat @ A @ ( zero_zero @ nat ) )
= ( zero_zero @ A ) ) ) ).
% of_nat_0
thf(fact_86_of__nat__0__eq__iff,axiom,
! [A: $tType] :
( ( semiring_char_0 @ A @ ( type @ A ) )
=> ! [N2: nat] :
( ( ( zero_zero @ A )
= ( semiring_1_of_nat @ A @ N2 ) )
= ( ( zero_zero @ nat )
= N2 ) ) ) ).
% of_nat_0_eq_iff
thf(fact_87_of__nat__eq__0__iff,axiom,
! [A: $tType] :
( ( semiring_char_0 @ A @ ( type @ A ) )
=> ! [M: nat] :
( ( ( semiring_1_of_nat @ A @ M )
= ( zero_zero @ A ) )
= ( M
= ( zero_zero @ nat ) ) ) ) ).
% of_nat_eq_0_iff
thf(fact_88_inverse__nonzero__iff__nonzero,axiom,
! [A: $tType] :
( ( division_ring @ A @ ( type @ A ) )
=> ! [A2: A] :
( ( ( inverse_inverse @ A @ A2 )
= ( zero_zero @ A ) )
= ( A2
= ( zero_zero @ A ) ) ) ) ).
% inverse_nonzero_iff_nonzero
thf(fact_89_inverse__zero,axiom,
! [A: $tType] :
( ( division_ring @ A @ ( type @ A ) )
=> ( ( inverse_inverse @ A @ ( zero_zero @ A ) )
= ( zero_zero @ A ) ) ) ).
% inverse_zero
thf(fact_90_mult__cancel__right2,axiom,
! [A: $tType] :
( ( ring_11004092258visors @ A @ ( type @ A ) )
=> ! [A2: A,C: A] :
( ( ( times_times @ A @ A2 @ C )
= C )
= ( ( C
= ( zero_zero @ A ) )
| ( A2
= ( one_one @ A ) ) ) ) ) ).
% mult_cancel_right2
thf(fact_91_mult__cancel__right1,axiom,
! [A: $tType] :
( ( ring_11004092258visors @ A @ ( type @ A ) )
=> ! [C: A,B: A] :
( ( C
= ( times_times @ A @ B @ C ) )
= ( ( C
= ( zero_zero @ A ) )
| ( B
= ( one_one @ A ) ) ) ) ) ).
% mult_cancel_right1
thf(fact_92_mult__cancel__left2,axiom,
! [A: $tType] :
( ( ring_11004092258visors @ A @ ( type @ A ) )
=> ! [C: A,A2: A] :
( ( ( times_times @ A @ C @ A2 )
= C )
= ( ( C
= ( zero_zero @ A ) )
| ( A2
= ( one_one @ A ) ) ) ) ) ).
% mult_cancel_left2
thf(fact_93_mult__cancel__left1,axiom,
! [A: $tType] :
( ( ring_11004092258visors @ A @ ( type @ A ) )
=> ! [C: A,B: A] :
( ( C
= ( times_times @ A @ C @ B ) )
= ( ( C
= ( zero_zero @ A ) )
| ( B
= ( one_one @ A ) ) ) ) ) ).
% mult_cancel_left1
thf(fact_94_nonzero__mult__divide__cancel__right,axiom,
! [A: $tType] :
( ( semidom_divide @ A @ ( type @ A ) )
=> ! [B: A,A2: A] :
( ( B
!= ( zero_zero @ A ) )
=> ( ( divide_divide @ A @ ( times_times @ A @ A2 @ B ) @ B )
= A2 ) ) ) ).
% nonzero_mult_divide_cancel_right
thf(fact_95_nonzero__mult__divide__cancel__left,axiom,
! [A: $tType] :
( ( semidom_divide @ A @ ( type @ A ) )
=> ! [A2: A,B: A] :
( ( A2
!= ( zero_zero @ A ) )
=> ( ( divide_divide @ A @ ( times_times @ A @ A2 @ B ) @ A2 )
= B ) ) ) ).
% nonzero_mult_divide_cancel_left
thf(fact_96_div__mult__mult1__if,axiom,
! [A: $tType] :
( ( semiring_div @ A @ ( type @ A ) )
=> ! [C: A,A2: A,B: A] :
( ( ( C
= ( zero_zero @ A ) )
=> ( ( divide_divide @ A @ ( times_times @ A @ C @ A2 ) @ ( times_times @ A @ C @ B ) )
= ( zero_zero @ A ) ) )
& ( ( C
!= ( zero_zero @ A ) )
=> ( ( divide_divide @ A @ ( times_times @ A @ C @ A2 ) @ ( times_times @ A @ C @ B ) )
= ( divide_divide @ A @ A2 @ B ) ) ) ) ) ).
% div_mult_mult1_if
thf(fact_97_div__mult__mult2,axiom,
! [A: $tType] :
( ( semiring_div @ A @ ( type @ A ) )
=> ! [C: A,A2: A,B: A] :
( ( C
!= ( zero_zero @ A ) )
=> ( ( divide_divide @ A @ ( times_times @ A @ A2 @ C ) @ ( times_times @ A @ B @ C ) )
= ( divide_divide @ A @ A2 @ B ) ) ) ) ).
% div_mult_mult2
thf(fact_98_div__mult__mult1,axiom,
! [A: $tType] :
( ( semiring_div @ A @ ( type @ A ) )
=> ! [C: A,A2: A,B: A] :
( ( C
!= ( zero_zero @ A ) )
=> ( ( divide_divide @ A @ ( times_times @ A @ C @ A2 ) @ ( times_times @ A @ C @ B ) )
= ( divide_divide @ A @ A2 @ B ) ) ) ) ).
% div_mult_mult1
thf(fact_99_mult__divide__mult__cancel__left__if,axiom,
! [A: $tType] :
( ( field @ A @ ( type @ A ) )
=> ! [C: A,A2: A,B: A] :
( ( ( C
= ( zero_zero @ A ) )
=> ( ( divide_divide @ A @ ( times_times @ A @ C @ A2 ) @ ( times_times @ A @ C @ B ) )
= ( zero_zero @ A ) ) )
& ( ( C
!= ( zero_zero @ A ) )
=> ( ( divide_divide @ A @ ( times_times @ A @ C @ A2 ) @ ( times_times @ A @ C @ B ) )
= ( divide_divide @ A @ A2 @ B ) ) ) ) ) ).
% mult_divide_mult_cancel_left_if
thf(fact_100_nonzero__mult__divide__mult__cancel__left,axiom,
! [A: $tType] :
( ( field @ A @ ( type @ A ) )
=> ! [C: A,A2: A,B: A] :
( ( C
!= ( zero_zero @ A ) )
=> ( ( divide_divide @ A @ ( times_times @ A @ C @ A2 ) @ ( times_times @ A @ C @ B ) )
= ( divide_divide @ A @ A2 @ B ) ) ) ) ).
% nonzero_mult_divide_mult_cancel_left
thf(fact_101_nonzero__mult__divide__mult__cancel__left2,axiom,
! [A: $tType] :
( ( field @ A @ ( type @ A ) )
=> ! [C: A,A2: A,B: A] :
( ( C
!= ( zero_zero @ A ) )
=> ( ( divide_divide @ A @ ( times_times @ A @ C @ A2 ) @ ( times_times @ A @ B @ C ) )
= ( divide_divide @ A @ A2 @ B ) ) ) ) ).
% nonzero_mult_divide_mult_cancel_left2
thf(fact_102_nonzero__mult__divide__mult__cancel__right,axiom,
! [A: $tType] :
( ( field @ A @ ( type @ A ) )
=> ! [C: A,A2: A,B: A] :
( ( C
!= ( zero_zero @ A ) )
=> ( ( divide_divide @ A @ ( times_times @ A @ A2 @ C ) @ ( times_times @ A @ B @ C ) )
= ( divide_divide @ A @ A2 @ B ) ) ) ) ).
% nonzero_mult_divide_mult_cancel_right
thf(fact_103_nonzero__mult__divide__mult__cancel__right2,axiom,
! [A: $tType] :
( ( field @ A @ ( type @ A ) )
=> ! [C: A,A2: A,B: A] :
( ( C
!= ( zero_zero @ A ) )
=> ( ( divide_divide @ A @ ( times_times @ A @ A2 @ C ) @ ( times_times @ A @ C @ B ) )
= ( divide_divide @ A @ A2 @ B ) ) ) ) ).
% nonzero_mult_divide_mult_cancel_right2
thf(fact_104_div__self,axiom,
! [A: $tType] :
( ( semidom_divide @ A @ ( type @ A ) )
=> ! [A2: A] :
( ( A2
!= ( zero_zero @ A ) )
=> ( ( divide_divide @ A @ A2 @ A2 )
= ( one_one @ A ) ) ) ) ).
% div_self
thf(fact_105_zero__eq__1__divide__iff,axiom,
! [A: $tType] :
( ( linordered_field @ A @ ( type @ A ) )
=> ! [A2: A] :
( ( ( zero_zero @ A )
= ( divide_divide @ A @ ( one_one @ A ) @ A2 ) )
= ( A2
= ( zero_zero @ A ) ) ) ) ).
% zero_eq_1_divide_iff
thf(fact_106_one__divide__eq__0__iff,axiom,
! [A: $tType] :
( ( linordered_field @ A @ ( type @ A ) )
=> ! [A2: A] :
( ( ( divide_divide @ A @ ( one_one @ A ) @ A2 )
= ( zero_zero @ A ) )
= ( A2
= ( zero_zero @ A ) ) ) ) ).
% one_divide_eq_0_iff
thf(fact_107_eq__divide__eq__1,axiom,
! [A: $tType] :
( ( linordered_field @ A @ ( type @ A ) )
=> ! [B: A,A2: A] :
( ( ( one_one @ A )
= ( divide_divide @ A @ B @ A2 ) )
= ( ( A2
!= ( zero_zero @ A ) )
& ( A2 = B ) ) ) ) ).
% eq_divide_eq_1
thf(fact_108_divide__eq__eq__1,axiom,
! [A: $tType] :
( ( linordered_field @ A @ ( type @ A ) )
=> ! [B: A,A2: A] :
( ( ( divide_divide @ A @ B @ A2 )
= ( one_one @ A ) )
= ( ( A2
!= ( zero_zero @ A ) )
& ( A2 = B ) ) ) ) ).
% divide_eq_eq_1
thf(fact_109_divide__self__if,axiom,
! [A: $tType] :
( ( division_ring @ A @ ( type @ A ) )
=> ! [A2: A] :
( ( ( A2
= ( zero_zero @ A ) )
=> ( ( divide_divide @ A @ A2 @ A2 )
= ( zero_zero @ A ) ) )
& ( ( A2
!= ( zero_zero @ A ) )
=> ( ( divide_divide @ A @ A2 @ A2 )
= ( one_one @ A ) ) ) ) ) ).
% divide_self_if
thf(fact_110_divide__self,axiom,
! [A: $tType] :
( ( division_ring @ A @ ( type @ A ) )
=> ! [A2: A] :
( ( A2
!= ( zero_zero @ A ) )
=> ( ( divide_divide @ A @ A2 @ A2 )
= ( one_one @ A ) ) ) ) ).
% divide_self
thf(fact_111_one__eq__divide__iff,axiom,
! [A: $tType] :
( ( field @ A @ ( type @ A ) )
=> ! [A2: A,B: A] :
( ( ( one_one @ A )
= ( divide_divide @ A @ A2 @ B ) )
= ( ( B
!= ( zero_zero @ A ) )
& ( A2 = B ) ) ) ) ).
% one_eq_divide_iff
thf(fact_112_divide__eq__1__iff,axiom,
! [A: $tType] :
( ( field @ A @ ( type @ A ) )
=> ! [A2: A,B: A] :
( ( ( divide_divide @ A @ A2 @ B )
= ( one_one @ A ) )
= ( ( B
!= ( zero_zero @ A ) )
& ( A2 = B ) ) ) ) ).
% divide_eq_1_iff
thf(fact_113_nonzero__divide__mult__cancel__right,axiom,
! [A: $tType] :
( ( field @ A @ ( type @ A ) )
=> ! [B: A,A2: A] :
( ( B
!= ( zero_zero @ A ) )
=> ( ( divide_divide @ A @ B @ ( times_times @ A @ A2 @ B ) )
= ( divide_divide @ A @ ( one_one @ A ) @ A2 ) ) ) ) ).
% nonzero_divide_mult_cancel_right
thf(fact_114_div__eq__dividend__iff,axiom,
! [A2: nat,B: nat] :
( ( A2
!= ( zero_zero @ nat ) )
=> ( ( ( divide_divide @ nat @ A2 @ B )
= A2 )
= ( B
= ( one_one @ nat ) ) ) ) ).
% div_eq_dividend_iff
thf(fact_115_zero__reorient,axiom,
! [A: $tType] :
( ( zero @ A @ ( type @ A ) )
=> ! [X: A] :
( ( ( zero_zero @ A )
= X )
= ( X
= ( zero_zero @ A ) ) ) ) ).
% zero_reorient
thf(fact_116_mult__right__cancel,axiom,
! [A: $tType] :
( ( semiri1923998003cancel @ A @ ( type @ A ) )
=> ! [C: A,A2: A,B: A] :
( ( C
!= ( zero_zero @ A ) )
=> ( ( ( times_times @ A @ A2 @ C )
= ( times_times @ A @ B @ C ) )
= ( A2 = B ) ) ) ) ).
% mult_right_cancel
thf(fact_117_mult__left__cancel,axiom,
! [A: $tType] :
( ( semiri1923998003cancel @ A @ ( type @ A ) )
=> ! [C: A,A2: A,B: A] :
( ( C
!= ( zero_zero @ A ) )
=> ( ( ( times_times @ A @ C @ A2 )
= ( times_times @ A @ C @ B ) )
= ( A2 = B ) ) ) ) ).
% mult_left_cancel
thf(fact_118_no__zero__divisors,axiom,
! [A: $tType] :
( ( semiri1193490041visors @ A @ ( type @ A ) )
=> ! [A2: A,B: A] :
( ( A2
!= ( zero_zero @ A ) )
=> ( ( B
!= ( zero_zero @ A ) )
=> ( ( times_times @ A @ A2 @ B )
!= ( zero_zero @ A ) ) ) ) ) ).
% no_zero_divisors
thf(fact_119_divisors__zero,axiom,
! [A: $tType] :
( ( semiri1193490041visors @ A @ ( type @ A ) )
=> ! [A2: A,B: A] :
( ( ( times_times @ A @ A2 @ B )
= ( zero_zero @ A ) )
=> ( ( A2
= ( zero_zero @ A ) )
| ( B
= ( zero_zero @ A ) ) ) ) ) ).
% divisors_zero
thf(fact_120_mult__not__zero,axiom,
! [A: $tType] :
( ( mult_zero @ A @ ( type @ A ) )
=> ! [A2: A,B: A] :
( ( ( times_times @ A @ A2 @ B )
!= ( zero_zero @ A ) )
=> ( ( A2
!= ( zero_zero @ A ) )
& ( B
!= ( zero_zero @ A ) ) ) ) ) ).
% mult_not_zero
thf(fact_121_zero__neq__one,axiom,
! [A: $tType] :
( ( zero_neq_one @ A @ ( type @ A ) )
=> ( ( zero_zero @ A )
!= ( one_one @ A ) ) ) ).
% zero_neq_one
thf(fact_122_abel__semigroup__axioms__def,axiom,
! [A: $tType] :
( ( abel_s1917375468axioms @ A )
= ( ^ [F2: A > A > A] :
! [A3: A,B2: A] :
( ( F2 @ A3 @ B2 )
= ( F2 @ B2 @ A3 ) ) ) ) ).
% abel_semigroup_axioms_def
thf(fact_123_abel__semigroup__axioms_Ointro,axiom,
! [A: $tType,F: A > A > A] :
( ! [A4: A,B3: A] :
( ( F @ A4 @ B3 )
= ( F @ B3 @ A4 ) )
=> ( abel_s1917375468axioms @ A @ F ) ) ).
% abel_semigroup_axioms.intro
thf(fact_124_semiring__normalization__rules_I9_J,axiom,
! [A: $tType] :
( ( comm_semiring_1 @ A @ ( type @ A ) )
=> ! [A2: A] :
( ( times_times @ A @ ( zero_zero @ A ) @ A2 )
= ( zero_zero @ A ) ) ) ).
% semiring_normalization_rules(9)
thf(fact_125_semiring__normalization__rules_I10_J,axiom,
! [A: $tType] :
( ( comm_semiring_1 @ A @ ( type @ A ) )
=> ! [A2: A] :
( ( times_times @ A @ A2 @ ( zero_zero @ A ) )
= ( zero_zero @ A ) ) ) ).
% semiring_normalization_rules(10)
thf(fact_126_mult__0,axiom,
! [N2: nat] :
( ( times_times @ nat @ ( zero_zero @ nat ) @ N2 )
= ( zero_zero @ nat ) ) ).
% mult_0
thf(fact_127_mult__eq__self__implies__10,axiom,
! [M: nat,N2: nat] :
( ( M
= ( times_times @ nat @ M @ N2 ) )
=> ( ( N2
= ( one_one @ nat ) )
| ( M
= ( zero_zero @ nat ) ) ) ) ).
% mult_eq_self_implies_10
thf(fact_128_nonzero__imp__inverse__nonzero,axiom,
! [A: $tType] :
( ( division_ring @ A @ ( type @ A ) )
=> ! [A2: A] :
( ( A2
!= ( zero_zero @ A ) )
=> ( ( inverse_inverse @ A @ A2 )
!= ( zero_zero @ A ) ) ) ) ).
% nonzero_imp_inverse_nonzero
thf(fact_129_nonzero__inverse__inverse__eq,axiom,
! [A: $tType] :
( ( division_ring @ A @ ( type @ A ) )
=> ! [A2: A] :
( ( A2
!= ( zero_zero @ A ) )
=> ( ( inverse_inverse @ A @ ( inverse_inverse @ A @ A2 ) )
= A2 ) ) ) ).
% nonzero_inverse_inverse_eq
thf(fact_130_nonzero__inverse__eq__imp__eq,axiom,
! [A: $tType] :
( ( division_ring @ A @ ( type @ A ) )
=> ! [A2: A,B: A] :
( ( ( inverse_inverse @ A @ A2 )
= ( inverse_inverse @ A @ B ) )
=> ( ( A2
!= ( zero_zero @ A ) )
=> ( ( B
!= ( zero_zero @ A ) )
=> ( A2 = B ) ) ) ) ) ).
% nonzero_inverse_eq_imp_eq
thf(fact_131_inverse__zero__imp__zero,axiom,
! [A: $tType] :
( ( division_ring @ A @ ( type @ A ) )
=> ! [A2: A] :
( ( ( inverse_inverse @ A @ A2 )
= ( zero_zero @ A ) )
=> ( A2
= ( zero_zero @ A ) ) ) ) ).
% inverse_zero_imp_zero
thf(fact_132_field__class_Ofield__inverse__zero,axiom,
! [A: $tType] :
( ( field @ A @ ( type @ A ) )
=> ( ( inverse_inverse @ A @ ( zero_zero @ A ) )
= ( zero_zero @ A ) ) ) ).
% field_class.field_inverse_zero
thf(fact_133_div__mult__self2__is__id,axiom,
! [A: $tType] :
( ( semiring_div @ A @ ( type @ A ) )
=> ! [B: A,A2: A] :
( ( B
!= ( zero_zero @ A ) )
=> ( ( divide_divide @ A @ ( times_times @ A @ A2 @ B ) @ B )
= A2 ) ) ) ).
% div_mult_self2_is_id
thf(fact_134_div__mult__self1__is__id,axiom,
! [A: $tType] :
( ( semiring_div @ A @ ( type @ A ) )
=> ! [B: A,A2: A] :
( ( B
!= ( zero_zero @ A ) )
=> ( ( divide_divide @ A @ ( times_times @ A @ B @ A2 ) @ B )
= A2 ) ) ) ).
% div_mult_self1_is_id
thf(fact_135_frac__eq__eq,axiom,
! [A: $tType] :
( ( field @ A @ ( type @ A ) )
=> ! [Y: A,Z: A,X: A,W: A] :
( ( Y
!= ( zero_zero @ A ) )
=> ( ( Z
!= ( zero_zero @ A ) )
=> ( ( ( divide_divide @ A @ X @ Y )
= ( divide_divide @ A @ W @ Z ) )
= ( ( times_times @ A @ X @ Z )
= ( times_times @ A @ W @ Y ) ) ) ) ) ) ).
% frac_eq_eq
thf(fact_136_divide__eq__eq,axiom,
! [A: $tType] :
( ( division_ring @ A @ ( type @ A ) )
=> ! [B: A,C: A,A2: A] :
( ( ( divide_divide @ A @ B @ C )
= A2 )
= ( ( ( C
!= ( zero_zero @ A ) )
=> ( B
= ( times_times @ A @ A2 @ C ) ) )
& ( ( C
= ( zero_zero @ A ) )
=> ( A2
= ( zero_zero @ A ) ) ) ) ) ) ).
% divide_eq_eq
thf(fact_137_eq__divide__eq,axiom,
! [A: $tType] :
( ( division_ring @ A @ ( type @ A ) )
=> ! [A2: A,B: A,C: A] :
( ( A2
= ( divide_divide @ A @ B @ C ) )
= ( ( ( C
!= ( zero_zero @ A ) )
=> ( ( times_times @ A @ A2 @ C )
= B ) )
& ( ( C
= ( zero_zero @ A ) )
=> ( A2
= ( zero_zero @ A ) ) ) ) ) ) ).
% eq_divide_eq
thf(fact_138_divide__eq__imp,axiom,
! [A: $tType] :
( ( division_ring @ A @ ( type @ A ) )
=> ! [C: A,B: A,A2: A] :
( ( C
!= ( zero_zero @ A ) )
=> ( ( B
= ( times_times @ A @ A2 @ C ) )
=> ( ( divide_divide @ A @ B @ C )
= A2 ) ) ) ) ).
% divide_eq_imp
thf(fact_139_eq__divide__imp,axiom,
! [A: $tType] :
( ( division_ring @ A @ ( type @ A ) )
=> ! [C: A,A2: A,B: A] :
( ( C
!= ( zero_zero @ A ) )
=> ( ( ( times_times @ A @ A2 @ C )
= B )
=> ( A2
= ( divide_divide @ A @ B @ C ) ) ) ) ) ).
% eq_divide_imp
thf(fact_140_nonzero__divide__eq__eq,axiom,
! [A: $tType] :
( ( division_ring @ A @ ( type @ A ) )
=> ! [C: A,B: A,A2: A] :
( ( C
!= ( zero_zero @ A ) )
=> ( ( ( divide_divide @ A @ B @ C )
= A2 )
= ( B
= ( times_times @ A @ A2 @ C ) ) ) ) ) ).
% nonzero_divide_eq_eq
thf(fact_141_nonzero__eq__divide__eq,axiom,
! [A: $tType] :
( ( division_ring @ A @ ( type @ A ) )
=> ! [C: A,A2: A,B: A] :
( ( C
!= ( zero_zero @ A ) )
=> ( ( A2
= ( divide_divide @ A @ B @ C ) )
= ( ( times_times @ A @ A2 @ C )
= B ) ) ) ) ).
% nonzero_eq_divide_eq
thf(fact_142_right__inverse__eq,axiom,
! [A: $tType] :
( ( division_ring @ A @ ( type @ A ) )
=> ! [B: A,A2: A] :
( ( B
!= ( zero_zero @ A ) )
=> ( ( ( divide_divide @ A @ A2 @ B )
= ( one_one @ A ) )
= ( A2 = B ) ) ) ) ).
% right_inverse_eq
thf(fact_143_nonzero__inverse__mult__distrib,axiom,
! [A: $tType] :
( ( division_ring @ A @ ( type @ A ) )
=> ! [A2: A,B: A] :
( ( A2
!= ( zero_zero @ A ) )
=> ( ( B
!= ( zero_zero @ A ) )
=> ( ( inverse_inverse @ A @ ( times_times @ A @ A2 @ B ) )
= ( times_times @ A @ ( inverse_inverse @ A @ B ) @ ( inverse_inverse @ A @ A2 ) ) ) ) ) ) ).
% nonzero_inverse_mult_distrib
thf(fact_144_field__class_Ofield__inverse,axiom,
! [A: $tType] :
( ( field @ A @ ( type @ A ) )
=> ! [A2: A] :
( ( A2
!= ( zero_zero @ A ) )
=> ( ( times_times @ A @ ( inverse_inverse @ A @ A2 ) @ A2 )
= ( one_one @ A ) ) ) ) ).
% field_class.field_inverse
thf(fact_145_nonzero__inverse__eq__divide,axiom,
! [A: $tType] :
( ( division_ring @ A @ ( type @ A ) )
=> ! [A2: A] :
( ( A2
!= ( zero_zero @ A ) )
=> ( ( inverse_inverse @ A @ A2 )
= ( divide_divide @ A @ ( one_one @ A ) @ A2 ) ) ) ) ).
% nonzero_inverse_eq_divide
thf(fact_146_abel__semigroup_Oaxioms_I2_J,axiom,
! [A: $tType,F: A > A > A] :
( ( abel_semigroup @ A @ F )
=> ( abel_s1917375468axioms @ A @ F ) ) ).
% abel_semigroup.axioms(2)
thf(fact_147_Divides_Odiv__mult2__eq,axiom,
! [A2: nat,B: nat,C: nat] :
( ( divide_divide @ nat @ A2 @ ( times_times @ nat @ B @ C ) )
= ( divide_divide @ nat @ ( divide_divide @ nat @ A2 @ B ) @ C ) ) ).
% Divides.div_mult2_eq
thf(fact_148_nat__mult__div__cancel__disj,axiom,
! [K: nat,M: nat,N2: nat] :
( ( ( K
= ( zero_zero @ nat ) )
=> ( ( divide_divide @ nat @ ( times_times @ nat @ K @ M ) @ ( times_times @ nat @ K @ N2 ) )
= ( zero_zero @ nat ) ) )
& ( ( K
!= ( zero_zero @ nat ) )
=> ( ( divide_divide @ nat @ ( times_times @ nat @ K @ M ) @ ( times_times @ nat @ K @ N2 ) )
= ( divide_divide @ nat @ M @ N2 ) ) ) ) ).
% nat_mult_div_cancel_disj
thf(fact_149_mult__one__div__unit__factor,axiom,
! [A: $tType] :
( ( normal1561407348emidom @ A @ ( type @ A ) )
=> ! [A2: A,B: A] :
( ( times_times @ A @ A2 @ ( divide_divide @ A @ ( one_one @ A ) @ ( normal627294541factor @ A @ B ) ) )
= ( divide_divide @ A @ A2 @ ( normal627294541factor @ A @ B ) ) ) ) ).
% mult_one_div_unit_factor
thf(fact_150_split__of__bool__asm,axiom,
! [A: $tType] :
( ( zero_neq_one @ A @ ( type @ A ) )
=> ! [P: A > $o,P2: $o] :
( ( P @ ( zero_neq_one_of_bool @ A @ P2 ) )
= ( ~ ( ( P2
& ~ ( P @ ( one_one @ A ) ) )
| ( ~ P2
& ~ ( P @ ( zero_zero @ A ) ) ) ) ) ) ) ).
% split_of_bool_asm
thf(fact_151_split__of__bool,axiom,
! [A: $tType] :
( ( zero_neq_one @ A @ ( type @ A ) )
=> ! [P: A > $o,P2: $o] :
( ( P @ ( zero_neq_one_of_bool @ A @ P2 ) )
= ( ( P2
=> ( P @ ( one_one @ A ) ) )
& ( ~ P2
=> ( P @ ( zero_zero @ A ) ) ) ) ) ) ).
% split_of_bool
thf(fact_152_of__bool__def,axiom,
! [A: $tType] :
( ( zero_neq_one @ A @ ( type @ A ) )
=> ( ( zero_neq_one_of_bool @ A )
= ( ^ [P3: $o] : ( if @ A @ P3 @ ( one_one @ A ) @ ( zero_zero @ A ) ) ) ) ) ).
% of_bool_def
thf(fact_153_of__bool__eq_I2_J,axiom,
! [A: $tType] :
( ( zero_neq_one @ A @ ( type @ A ) )
=> ( ( zero_neq_one_of_bool @ A @ $true )
= ( one_one @ A ) ) ) ).
% of_bool_eq(2)
thf(fact_154_is__unit__divide__mult__cancel__right,axiom,
! [A: $tType] :
( ( algebraic_semidom @ A @ ( type @ A ) )
=> ! [A2: A,B: A] :
( ( A2
!= ( zero_zero @ A ) )
=> ( ( dvd_dvd @ A @ B @ ( one_one @ A ) )
=> ( ( divide_divide @ A @ A2 @ ( times_times @ A @ B @ A2 ) )
= ( divide_divide @ A @ ( one_one @ A ) @ B ) ) ) ) ) ).
% is_unit_divide_mult_cancel_right
thf(fact_155_unit__factor__simps_I1_J,axiom,
( ( normal627294541factor @ nat @ ( zero_zero @ nat ) )
= ( zero_zero @ nat ) ) ).
% unit_factor_simps(1)
thf(fact_156_nat__dvd__1__iff__1,axiom,
! [M: nat] :
( ( dvd_dvd @ nat @ M @ ( one_one @ nat ) )
= ( M
= ( one_one @ nat ) ) ) ).
% nat_dvd_1_iff_1
thf(fact_157_unit__factor__idem,axiom,
! [A: $tType] :
( ( normal1561407348emidom @ A @ ( type @ A ) )
=> ! [A2: A] :
( ( normal627294541factor @ A @ ( normal627294541factor @ A @ A2 ) )
= ( normal627294541factor @ A @ A2 ) ) ) ).
% unit_factor_idem
thf(fact_158_dvd__0__left__iff,axiom,
! [A: $tType] :
( ( comm_semiring_1 @ A @ ( type @ A ) )
=> ! [A2: A] :
( ( dvd_dvd @ A @ ( zero_zero @ A ) @ A2 )
= ( A2
= ( zero_zero @ A ) ) ) ) ).
% dvd_0_left_iff
thf(fact_159_dvd__0__right,axiom,
! [A: $tType] :
( ( comm_semiring_1 @ A @ ( type @ A ) )
=> ! [A2: A] : ( dvd_dvd @ A @ A2 @ ( zero_zero @ A ) ) ) ).
% dvd_0_right
thf(fact_160_div__dvd__div,axiom,
! [A: $tType] :
( ( algebraic_semidom @ A @ ( type @ A ) )
=> ! [A2: A,B: A,C: A] :
( ( dvd_dvd @ A @ A2 @ B )
=> ( ( dvd_dvd @ A @ A2 @ C )
=> ( ( dvd_dvd @ A @ ( divide_divide @ A @ B @ A2 ) @ ( divide_divide @ A @ C @ A2 ) )
= ( dvd_dvd @ A @ B @ C ) ) ) ) ) ).
% div_dvd_div
thf(fact_161_nat__mult__dvd__cancel__disj,axiom,
! [K: nat,M: nat,N2: nat] :
( ( dvd_dvd @ nat @ ( times_times @ nat @ K @ M ) @ ( times_times @ nat @ K @ N2 ) )
= ( ( K
= ( zero_zero @ nat ) )
| ( dvd_dvd @ nat @ M @ N2 ) ) ) ).
% nat_mult_dvd_cancel_disj
thf(fact_162_unit__factor__eq__0__iff,axiom,
! [A: $tType] :
( ( normal1561407348emidom @ A @ ( type @ A ) )
=> ! [A2: A] :
( ( ( normal627294541factor @ A @ A2 )
= ( zero_zero @ A ) )
= ( A2
= ( zero_zero @ A ) ) ) ) ).
% unit_factor_eq_0_iff
thf(fact_163_unit__factor__0,axiom,
! [A: $tType] :
( ( normal1561407348emidom @ A @ ( type @ A ) )
=> ( ( normal627294541factor @ A @ ( zero_zero @ A ) )
= ( zero_zero @ A ) ) ) ).
% unit_factor_0
thf(fact_164_unit__factor__1,axiom,
! [A: $tType] :
( ( normal1561407348emidom @ A @ ( type @ A ) )
=> ( ( normal627294541factor @ A @ ( one_one @ A ) )
= ( one_one @ A ) ) ) ).
% unit_factor_1
thf(fact_165_of__bool__eq_I1_J,axiom,
! [A: $tType] :
( ( zero_neq_one @ A @ ( type @ A ) )
=> ( ( zero_neq_one_of_bool @ A @ $false )
= ( zero_zero @ A ) ) ) ).
% of_bool_eq(1)
thf(fact_166_dvd__mult__cancel__left,axiom,
! [A: $tType] :
( ( idom @ A @ ( type @ A ) )
=> ! [C: A,A2: A,B: A] :
( ( dvd_dvd @ A @ ( times_times @ A @ C @ A2 ) @ ( times_times @ A @ C @ B ) )
= ( ( C
= ( zero_zero @ A ) )
| ( dvd_dvd @ A @ A2 @ B ) ) ) ) ).
% dvd_mult_cancel_left
thf(fact_167_dvd__mult__cancel__right,axiom,
! [A: $tType] :
( ( idom @ A @ ( type @ A ) )
=> ! [A2: A,C: A,B: A] :
( ( dvd_dvd @ A @ ( times_times @ A @ A2 @ C ) @ ( times_times @ A @ B @ C ) )
= ( ( C
= ( zero_zero @ A ) )
| ( dvd_dvd @ A @ A2 @ B ) ) ) ) ).
% dvd_mult_cancel_right
thf(fact_168_dvd__times__left__cancel__iff,axiom,
! [A: $tType] :
( ( algebraic_semidom @ A @ ( type @ A ) )
=> ! [A2: A,B: A,C: A] :
( ( A2
!= ( zero_zero @ A ) )
=> ( ( dvd_dvd @ A @ ( times_times @ A @ A2 @ B ) @ ( times_times @ A @ A2 @ C ) )
= ( dvd_dvd @ A @ B @ C ) ) ) ) ).
% dvd_times_left_cancel_iff
thf(fact_169_dvd__times__right__cancel__iff,axiom,
! [A: $tType] :
( ( algebraic_semidom @ A @ ( type @ A ) )
=> ! [A2: A,B: A,C: A] :
( ( A2
!= ( zero_zero @ A ) )
=> ( ( dvd_dvd @ A @ ( times_times @ A @ B @ A2 ) @ ( times_times @ A @ C @ A2 ) )
= ( dvd_dvd @ A @ B @ C ) ) ) ) ).
% dvd_times_right_cancel_iff
thf(fact_170_unit__prod,axiom,
! [A: $tType] :
( ( algebraic_semidom @ A @ ( type @ A ) )
=> ! [A2: A,B: A] :
( ( dvd_dvd @ A @ A2 @ ( one_one @ A ) )
=> ( ( dvd_dvd @ A @ B @ ( one_one @ A ) )
=> ( dvd_dvd @ A @ ( times_times @ A @ A2 @ B ) @ ( one_one @ A ) ) ) ) ) ).
% unit_prod
thf(fact_171_dvd__div__mult__self,axiom,
! [A: $tType] :
( ( algebraic_semidom @ A @ ( type @ A ) )
=> ! [A2: A,B: A] :
( ( dvd_dvd @ A @ A2 @ B )
=> ( ( times_times @ A @ ( divide_divide @ A @ B @ A2 ) @ A2 )
= B ) ) ) ).
% dvd_div_mult_self
thf(fact_172_dvd__mult__div__cancel,axiom,
! [A: $tType] :
( ( algebraic_semidom @ A @ ( type @ A ) )
=> ! [A2: A,B: A] :
( ( dvd_dvd @ A @ A2 @ B )
=> ( ( times_times @ A @ A2 @ ( divide_divide @ A @ B @ A2 ) )
= B ) ) ) ).
% dvd_mult_div_cancel
thf(fact_173_unit__div__1__div__1,axiom,
! [A: $tType] :
( ( algebraic_semidom @ A @ ( type @ A ) )
=> ! [A2: A] :
( ( dvd_dvd @ A @ A2 @ ( one_one @ A ) )
=> ( ( divide_divide @ A @ ( one_one @ A ) @ ( divide_divide @ A @ ( one_one @ A ) @ A2 ) )
= A2 ) ) ) ).
% unit_div_1_div_1
thf(fact_174_unit__div__1__unit,axiom,
! [A: $tType] :
( ( algebraic_semidom @ A @ ( type @ A ) )
=> ! [A2: A] :
( ( dvd_dvd @ A @ A2 @ ( one_one @ A ) )
=> ( dvd_dvd @ A @ ( divide_divide @ A @ ( one_one @ A ) @ A2 ) @ ( one_one @ A ) ) ) ) ).
% unit_div_1_unit
thf(fact_175_unit__div,axiom,
! [A: $tType] :
( ( algebraic_semidom @ A @ ( type @ A ) )
=> ! [A2: A,B: A] :
( ( dvd_dvd @ A @ A2 @ ( one_one @ A ) )
=> ( ( dvd_dvd @ A @ B @ ( one_one @ A ) )
=> ( dvd_dvd @ A @ ( divide_divide @ A @ A2 @ B ) @ ( one_one @ A ) ) ) ) ) ).
% unit_div
thf(fact_176_unit__mult__div__div,axiom,
! [A: $tType] :
( ( algebraic_semidom @ A @ ( type @ A ) )
=> ! [A2: A,B: A] :
( ( dvd_dvd @ A @ A2 @ ( one_one @ A ) )
=> ( ( times_times @ A @ B @ ( divide_divide @ A @ ( one_one @ A ) @ A2 ) )
= ( divide_divide @ A @ B @ A2 ) ) ) ) ).
% unit_mult_div_div
thf(fact_177_unit__div__mult__self,axiom,
! [A: $tType] :
( ( algebraic_semidom @ A @ ( type @ A ) )
=> ! [A2: A,B: A] :
( ( dvd_dvd @ A @ A2 @ ( one_one @ A ) )
=> ( ( times_times @ A @ ( divide_divide @ A @ B @ A2 ) @ A2 )
= B ) ) ) ).
% unit_div_mult_self
thf(fact_178_unit__factor__is__unit,axiom,
! [A: $tType] :
( ( normal1561407348emidom @ A @ ( type @ A ) )
=> ! [A2: A] :
( ( A2
!= ( zero_zero @ A ) )
=> ( dvd_dvd @ A @ ( normal627294541factor @ A @ A2 ) @ ( one_one @ A ) ) ) ) ).
% unit_factor_is_unit
thf(fact_179_is__unit__unit__factor,axiom,
! [A: $tType] :
( ( normal1561407348emidom @ A @ ( type @ A ) )
=> ! [A2: A] :
( ( dvd_dvd @ A @ A2 @ ( one_one @ A ) )
=> ( ( normal627294541factor @ A @ A2 )
= A2 ) ) ) ).
% is_unit_unit_factor
thf(fact_180_dvd__unit__factor__div,axiom,
! [A: $tType] :
( ( normal1561407348emidom @ A @ ( type @ A ) )
=> ! [B: A,A2: A] :
( ( dvd_dvd @ A @ B @ A2 )
=> ( ( normal627294541factor @ A @ ( divide_divide @ A @ A2 @ B ) )
= ( divide_divide @ A @ ( normal627294541factor @ A @ A2 ) @ ( normal627294541factor @ A @ B ) ) ) ) ) ).
% dvd_unit_factor_div
thf(fact_181_zdiv__int,axiom,
! [A2: nat,B: nat] :
( ( semiring_1_of_nat @ int @ ( divide_divide @ nat @ A2 @ B ) )
= ( divide_divide @ int @ ( semiring_1_of_nat @ int @ A2 ) @ ( semiring_1_of_nat @ int @ B ) ) ) ).
% zdiv_int
thf(fact_182_Divides_Otransfer__int__nat__functions_I1_J,axiom,
! [X: nat,Y: nat] :
( ( divide_divide @ int @ ( semiring_1_of_nat @ int @ X ) @ ( semiring_1_of_nat @ int @ Y ) )
= ( semiring_1_of_nat @ int @ ( divide_divide @ nat @ X @ Y ) ) ) ).
% Divides.transfer_int_nat_functions(1)
thf(fact_183_dvd__refl,axiom,
! [A: $tType] :
( ( comm_monoid_mult @ A @ ( type @ A ) )
=> ! [A2: A] : ( dvd_dvd @ A @ A2 @ A2 ) ) ).
% dvd_refl
thf(fact_184_dvd__trans,axiom,
! [A: $tType] :
( ( comm_monoid_mult @ A @ ( type @ A ) )
=> ! [A2: A,B: A,C: A] :
( ( dvd_dvd @ A @ A2 @ B )
=> ( ( dvd_dvd @ A @ B @ C )
=> ( dvd_dvd @ A @ A2 @ C ) ) ) ) ).
% dvd_trans
thf(fact_185_of__bool__eq__iff,axiom,
! [A: $tType] :
( ( zero_neq_one @ A @ ( type @ A ) )
=> ! [P2: $o,Q: $o] :
( ( ( zero_neq_one_of_bool @ A @ P2 )
= ( zero_neq_one_of_bool @ A @ Q ) )
= ( P2 = Q ) ) ) ).
% of_bool_eq_iff
thf(fact_186_unit__factor__dvd,axiom,
! [A: $tType] :
( ( normal1561407348emidom @ A @ ( type @ A ) )
=> ! [A2: A,B: A] :
( ( A2
!= ( zero_zero @ A ) )
=> ( dvd_dvd @ A @ ( normal627294541factor @ A @ A2 ) @ B ) ) ) ).
% unit_factor_dvd
thf(fact_187_unit__factor__self,axiom,
! [A: $tType] :
( ( normal1561407348emidom @ A @ ( type @ A ) )
=> ! [A2: A] : ( dvd_dvd @ A @ ( normal627294541factor @ A @ A2 ) @ A2 ) ) ).
% unit_factor_self
thf(fact_188_dvd__0__left,axiom,
! [A: $tType] :
( ( comm_semiring_1 @ A @ ( type @ A ) )
=> ! [A2: A] :
( ( dvd_dvd @ A @ ( zero_zero @ A ) @ A2 )
=> ( A2
= ( zero_zero @ A ) ) ) ) ).
% dvd_0_left
thf(fact_189_dvd__triv__right,axiom,
! [A: $tType] :
( ( comm_monoid_mult @ A @ ( type @ A ) )
=> ! [A2: A,B: A] : ( dvd_dvd @ A @ A2 @ ( times_times @ A @ B @ A2 ) ) ) ).
% dvd_triv_right
thf(fact_190_dvd__mult__right,axiom,
! [A: $tType] :
( ( comm_monoid_mult @ A @ ( type @ A ) )
=> ! [A2: A,B: A,C: A] :
( ( dvd_dvd @ A @ ( times_times @ A @ A2 @ B ) @ C )
=> ( dvd_dvd @ A @ B @ C ) ) ) ).
% dvd_mult_right
thf(fact_191_mult__dvd__mono,axiom,
! [A: $tType] :
( ( comm_monoid_mult @ A @ ( type @ A ) )
=> ! [A2: A,B: A,C: A,D: A] :
( ( dvd_dvd @ A @ A2 @ B )
=> ( ( dvd_dvd @ A @ C @ D )
=> ( dvd_dvd @ A @ ( times_times @ A @ A2 @ C ) @ ( times_times @ A @ B @ D ) ) ) ) ) ).
% mult_dvd_mono
thf(fact_192_dvd__triv__left,axiom,
! [A: $tType] :
( ( comm_monoid_mult @ A @ ( type @ A ) )
=> ! [A2: A,B: A] : ( dvd_dvd @ A @ A2 @ ( times_times @ A @ A2 @ B ) ) ) ).
% dvd_triv_left
thf(fact_193_dvd__mult__left,axiom,
! [A: $tType] :
( ( comm_monoid_mult @ A @ ( type @ A ) )
=> ! [A2: A,B: A,C: A] :
( ( dvd_dvd @ A @ ( times_times @ A @ A2 @ B ) @ C )
=> ( dvd_dvd @ A @ A2 @ C ) ) ) ).
% dvd_mult_left
thf(fact_194_dvd__mult2,axiom,
! [A: $tType] :
( ( comm_monoid_mult @ A @ ( type @ A ) )
=> ! [A2: A,B: A,C: A] :
( ( dvd_dvd @ A @ A2 @ B )
=> ( dvd_dvd @ A @ A2 @ ( times_times @ A @ B @ C ) ) ) ) ).
% dvd_mult2
thf(fact_195_dvd__mult,axiom,
! [A: $tType] :
( ( comm_monoid_mult @ A @ ( type @ A ) )
=> ! [A2: A,C: A,B: A] :
( ( dvd_dvd @ A @ A2 @ C )
=> ( dvd_dvd @ A @ A2 @ ( times_times @ A @ B @ C ) ) ) ) ).
% dvd_mult
thf(fact_196_dvd__def,axiom,
! [A: $tType] :
( ( dvd @ A @ ( type @ A ) )
=> ( ( dvd_dvd @ A )
= ( ^ [B2: A,A3: A] :
? [K2: A] :
( A3
= ( times_times @ A @ B2 @ K2 ) ) ) ) ) ).
% dvd_def
thf(fact_197_dvdI,axiom,
! [A: $tType] :
( ( dvd @ A @ ( type @ A ) )
=> ! [A2: A,B: A,K: A] :
( ( A2
= ( times_times @ A @ B @ K ) )
=> ( dvd_dvd @ A @ B @ A2 ) ) ) ).
% dvdI
thf(fact_198_dvdE,axiom,
! [A: $tType] :
( ( dvd @ A @ ( type @ A ) )
=> ! [B: A,A2: A] :
( ( dvd_dvd @ A @ B @ A2 )
=> ~ ! [K3: A] :
( A2
!= ( times_times @ A @ B @ K3 ) ) ) ) ).
% dvdE
thf(fact_199_one__dvd,axiom,
! [A: $tType] :
( ( comm_monoid_mult @ A @ ( type @ A ) )
=> ! [A2: A] : ( dvd_dvd @ A @ ( one_one @ A ) @ A2 ) ) ).
% one_dvd
thf(fact_200_unit__imp__dvd,axiom,
! [A: $tType] :
( ( algebraic_semidom @ A @ ( type @ A ) )
=> ! [B: A,A2: A] :
( ( dvd_dvd @ A @ B @ ( one_one @ A ) )
=> ( dvd_dvd @ A @ B @ A2 ) ) ) ).
% unit_imp_dvd
thf(fact_201_dvd__unit__imp__unit,axiom,
! [A: $tType] :
( ( algebraic_semidom @ A @ ( type @ A ) )
=> ! [A2: A,B: A] :
( ( dvd_dvd @ A @ A2 @ B )
=> ( ( dvd_dvd @ A @ B @ ( one_one @ A ) )
=> ( dvd_dvd @ A @ A2 @ ( one_one @ A ) ) ) ) ) ).
% dvd_unit_imp_unit
thf(fact_202_div__div__div__same,axiom,
! [A: $tType] :
( ( semiring_div @ A @ ( type @ A ) )
=> ! [D: A,A2: A,B: A] :
( ( dvd_dvd @ A @ D @ A2 )
=> ( ( dvd_dvd @ A @ D @ B )
=> ( ( dvd_dvd @ A @ B @ A2 )
=> ( ( divide_divide @ A @ ( divide_divide @ A @ A2 @ D ) @ ( divide_divide @ A @ B @ D ) )
= ( divide_divide @ A @ A2 @ B ) ) ) ) ) ) ).
% div_div_div_same
thf(fact_203_unit__factor__mult,axiom,
! [A: $tType] :
( ( normal1561407348emidom @ A @ ( type @ A ) )
=> ! [A2: A,B: A] :
( ( normal627294541factor @ A @ ( times_times @ A @ A2 @ B ) )
= ( times_times @ A @ ( normal627294541factor @ A @ A2 ) @ ( normal627294541factor @ A @ B ) ) ) ) ).
% unit_factor_mult
thf(fact_204_unit__factor__nat__def,axiom,
( ( normal627294541factor @ nat )
= ( ^ [N: nat] :
( if @ nat
@ ( N
= ( zero_zero @ nat ) )
@ ( zero_zero @ nat )
@ ( one_one @ nat ) ) ) ) ).
% unit_factor_nat_def
thf(fact_205_not__is__unit__0,axiom,
! [A: $tType] :
( ( algebraic_semidom @ A @ ( type @ A ) )
=> ~ ( dvd_dvd @ A @ ( zero_zero @ A ) @ ( one_one @ A ) ) ) ).
% not_is_unit_0
thf(fact_206_is__unit__mult__iff,axiom,
! [A: $tType] :
( ( algebraic_semidom @ A @ ( type @ A ) )
=> ! [A2: A,B: A] :
( ( dvd_dvd @ A @ ( times_times @ A @ A2 @ B ) @ ( one_one @ A ) )
= ( ( dvd_dvd @ A @ A2 @ ( one_one @ A ) )
& ( dvd_dvd @ A @ B @ ( one_one @ A ) ) ) ) ) ).
% is_unit_mult_iff
thf(fact_207_dvd__mult__unit__iff,axiom,
! [A: $tType] :
( ( algebraic_semidom @ A @ ( type @ A ) )
=> ! [B: A,A2: A,C: A] :
( ( dvd_dvd @ A @ B @ ( one_one @ A ) )
=> ( ( dvd_dvd @ A @ A2 @ ( times_times @ A @ C @ B ) )
= ( dvd_dvd @ A @ A2 @ C ) ) ) ) ).
% dvd_mult_unit_iff
thf(fact_208_mult__unit__dvd__iff,axiom,
! [A: $tType] :
( ( algebraic_semidom @ A @ ( type @ A ) )
=> ! [B: A,A2: A,C: A] :
( ( dvd_dvd @ A @ B @ ( one_one @ A ) )
=> ( ( dvd_dvd @ A @ ( times_times @ A @ A2 @ B ) @ C )
= ( dvd_dvd @ A @ A2 @ C ) ) ) ) ).
% mult_unit_dvd_iff
thf(fact_209_unit__mult__left__cancel,axiom,
! [A: $tType] :
( ( algebraic_semidom @ A @ ( type @ A ) )
=> ! [A2: A,B: A,C: A] :
( ( dvd_dvd @ A @ A2 @ ( one_one @ A ) )
=> ( ( ( times_times @ A @ A2 @ B )
= ( times_times @ A @ A2 @ C ) )
= ( B = C ) ) ) ) ).
% unit_mult_left_cancel
thf(fact_210_unit__mult__right__cancel,axiom,
! [A: $tType] :
( ( algebraic_semidom @ A @ ( type @ A ) )
=> ! [A2: A,B: A,C: A] :
( ( dvd_dvd @ A @ A2 @ ( one_one @ A ) )
=> ( ( ( times_times @ A @ B @ A2 )
= ( times_times @ A @ C @ A2 ) )
= ( B = C ) ) ) ) ).
% unit_mult_right_cancel
thf(fact_211_dvd__div__mult,axiom,
! [A: $tType] :
( ( algebraic_semidom @ A @ ( type @ A ) )
=> ! [C: A,B: A,A2: A] :
( ( dvd_dvd @ A @ C @ B )
=> ( ( times_times @ A @ ( divide_divide @ A @ B @ C ) @ A2 )
= ( divide_divide @ A @ ( times_times @ A @ B @ A2 ) @ C ) ) ) ) ).
% dvd_div_mult
thf(fact_212_div__div__eq__right,axiom,
! [A: $tType] :
( ( semiring_div @ A @ ( type @ A ) )
=> ! [C: A,B: A,A2: A] :
( ( dvd_dvd @ A @ C @ B )
=> ( ( dvd_dvd @ A @ B @ A2 )
=> ( ( divide_divide @ A @ A2 @ ( divide_divide @ A @ B @ C ) )
= ( times_times @ A @ ( divide_divide @ A @ A2 @ B ) @ C ) ) ) ) ) ).
% div_div_eq_right
thf(fact_213_div__mult__swap,axiom,
! [A: $tType] :
( ( algebraic_semidom @ A @ ( type @ A ) )
=> ! [C: A,B: A,A2: A] :
( ( dvd_dvd @ A @ C @ B )
=> ( ( times_times @ A @ A2 @ ( divide_divide @ A @ B @ C ) )
= ( divide_divide @ A @ ( times_times @ A @ A2 @ B ) @ C ) ) ) ) ).
% div_mult_swap
thf(fact_214_dvd__div__mult2__eq,axiom,
! [A: $tType] :
( ( algebraic_semidom @ A @ ( type @ A ) )
=> ! [B: A,C: A,A2: A] :
( ( dvd_dvd @ A @ ( times_times @ A @ B @ C ) @ A2 )
=> ( ( divide_divide @ A @ A2 @ ( times_times @ A @ B @ C ) )
= ( divide_divide @ A @ ( divide_divide @ A @ A2 @ B ) @ C ) ) ) ) ).
% dvd_div_mult2_eq
thf(fact_215_dvd__mult__imp__div,axiom,
! [A: $tType] :
( ( algebraic_semidom @ A @ ( type @ A ) )
=> ! [A2: A,C: A,B: A] :
( ( dvd_dvd @ A @ ( times_times @ A @ A2 @ C ) @ B )
=> ( dvd_dvd @ A @ A2 @ ( divide_divide @ A @ B @ C ) ) ) ) ).
% dvd_mult_imp_div
thf(fact_216_div__mult__div__if__dvd,axiom,
! [A: $tType] :
( ( algebraic_semidom @ A @ ( type @ A ) )
=> ! [B: A,A2: A,D: A,C: A] :
( ( dvd_dvd @ A @ B @ A2 )
=> ( ( dvd_dvd @ A @ D @ C )
=> ( ( times_times @ A @ ( divide_divide @ A @ A2 @ B ) @ ( divide_divide @ A @ C @ D ) )
= ( divide_divide @ A @ ( times_times @ A @ A2 @ C ) @ ( times_times @ A @ B @ D ) ) ) ) ) ) ).
% div_mult_div_if_dvd
thf(fact_217_dvd__div__unit__iff,axiom,
! [A: $tType] :
( ( algebraic_semidom @ A @ ( type @ A ) )
=> ! [B: A,A2: A,C: A] :
( ( dvd_dvd @ A @ B @ ( one_one @ A ) )
=> ( ( dvd_dvd @ A @ A2 @ ( divide_divide @ A @ C @ B ) )
= ( dvd_dvd @ A @ A2 @ C ) ) ) ) ).
% dvd_div_unit_iff
thf(fact_218_div__unit__dvd__iff,axiom,
! [A: $tType] :
( ( algebraic_semidom @ A @ ( type @ A ) )
=> ! [B: A,A2: A,C: A] :
( ( dvd_dvd @ A @ B @ ( one_one @ A ) )
=> ( ( dvd_dvd @ A @ ( divide_divide @ A @ A2 @ B ) @ C )
= ( dvd_dvd @ A @ A2 @ C ) ) ) ) ).
% div_unit_dvd_iff
thf(fact_219_unit__div__cancel,axiom,
! [A: $tType] :
( ( algebraic_semidom @ A @ ( type @ A ) )
=> ! [A2: A,B: A,C: A] :
( ( dvd_dvd @ A @ A2 @ ( one_one @ A ) )
=> ( ( ( divide_divide @ A @ B @ A2 )
= ( divide_divide @ A @ C @ A2 ) )
= ( B = C ) ) ) ) ).
% unit_div_cancel
thf(fact_220_unit__dvdE,axiom,
! [A: $tType] :
( ( algebraic_semidom @ A @ ( type @ A ) )
=> ! [A2: A,B: A] :
( ( dvd_dvd @ A @ A2 @ ( one_one @ A ) )
=> ~ ( ( A2
!= ( zero_zero @ A ) )
=> ! [C3: A] :
( B
!= ( times_times @ A @ A2 @ C3 ) ) ) ) ) ).
% unit_dvdE
thf(fact_221_dvd__div__eq__mult,axiom,
! [A: $tType] :
( ( algebraic_semidom @ A @ ( type @ A ) )
=> ! [A2: A,B: A,C: A] :
( ( A2
!= ( zero_zero @ A ) )
=> ( ( dvd_dvd @ A @ A2 @ B )
=> ( ( ( divide_divide @ A @ B @ A2 )
= C )
= ( B
= ( times_times @ A @ C @ A2 ) ) ) ) ) ) ).
% dvd_div_eq_mult
thf(fact_222_div__dvd__iff__mult,axiom,
! [A: $tType] :
( ( algebraic_semidom @ A @ ( type @ A ) )
=> ! [B: A,A2: A,C: A] :
( ( B
!= ( zero_zero @ A ) )
=> ( ( dvd_dvd @ A @ B @ A2 )
=> ( ( dvd_dvd @ A @ ( divide_divide @ A @ A2 @ B ) @ C )
= ( dvd_dvd @ A @ A2 @ ( times_times @ A @ C @ B ) ) ) ) ) ) ).
% div_dvd_iff_mult
thf(fact_223_dvd__div__iff__mult,axiom,
! [A: $tType] :
( ( algebraic_semidom @ A @ ( type @ A ) )
=> ! [C: A,B: A,A2: A] :
( ( C
!= ( zero_zero @ A ) )
=> ( ( dvd_dvd @ A @ C @ B )
=> ( ( dvd_dvd @ A @ A2 @ ( divide_divide @ A @ B @ C ) )
= ( dvd_dvd @ A @ ( times_times @ A @ A2 @ C ) @ B ) ) ) ) ) ).
% dvd_div_iff_mult
thf(fact_224_dvd__div__div__eq__mult,axiom,
! [A: $tType] :
( ( algebraic_semidom @ A @ ( type @ A ) )
=> ! [A2: A,C: A,B: A,D: A] :
( ( A2
!= ( zero_zero @ A ) )
=> ( ( C
!= ( zero_zero @ A ) )
=> ( ( dvd_dvd @ A @ A2 @ B )
=> ( ( dvd_dvd @ A @ C @ D )
=> ( ( ( divide_divide @ A @ B @ A2 )
= ( divide_divide @ A @ D @ C ) )
= ( ( times_times @ A @ B @ C )
= ( times_times @ A @ A2 @ D ) ) ) ) ) ) ) ) ).
% dvd_div_div_eq_mult
thf(fact_225_unit__eq__div1,axiom,
! [A: $tType] :
( ( algebraic_semidom @ A @ ( type @ A ) )
=> ! [B: A,A2: A,C: A] :
( ( dvd_dvd @ A @ B @ ( one_one @ A ) )
=> ( ( ( divide_divide @ A @ A2 @ B )
= C )
= ( A2
= ( times_times @ A @ C @ B ) ) ) ) ) ).
% unit_eq_div1
thf(fact_226_unit__eq__div2,axiom,
! [A: $tType] :
( ( algebraic_semidom @ A @ ( type @ A ) )
=> ! [B: A,A2: A,C: A] :
( ( dvd_dvd @ A @ B @ ( one_one @ A ) )
=> ( ( A2
= ( divide_divide @ A @ C @ B ) )
= ( ( times_times @ A @ A2 @ B )
= C ) ) ) ) ).
% unit_eq_div2
thf(fact_227_unit__div__commute,axiom,
! [A: $tType] :
( ( algebraic_semidom @ A @ ( type @ A ) )
=> ! [B: A,A2: A,C: A] :
( ( dvd_dvd @ A @ B @ ( one_one @ A ) )
=> ( ( times_times @ A @ ( divide_divide @ A @ A2 @ B ) @ C )
= ( divide_divide @ A @ ( times_times @ A @ A2 @ C ) @ B ) ) ) ) ).
% unit_div_commute
thf(fact_228_unit__div__mult__swap,axiom,
! [A: $tType] :
( ( algebraic_semidom @ A @ ( type @ A ) )
=> ! [C: A,A2: A,B: A] :
( ( dvd_dvd @ A @ C @ ( one_one @ A ) )
=> ( ( times_times @ A @ A2 @ ( divide_divide @ A @ B @ C ) )
= ( divide_divide @ A @ ( times_times @ A @ A2 @ B ) @ C ) ) ) ) ).
% unit_div_mult_swap
thf(fact_229_is__unit__div__mult2__eq,axiom,
! [A: $tType] :
( ( algebraic_semidom @ A @ ( type @ A ) )
=> ! [B: A,C: A,A2: A] :
( ( dvd_dvd @ A @ B @ ( one_one @ A ) )
=> ( ( dvd_dvd @ A @ C @ ( one_one @ A ) )
=> ( ( divide_divide @ A @ A2 @ ( times_times @ A @ B @ C ) )
= ( divide_divide @ A @ ( divide_divide @ A @ A2 @ B ) @ C ) ) ) ) ) ).
% is_unit_div_mult2_eq
thf(fact_230_nat__mult__eq__cancel__disj,axiom,
! [K: nat,M: nat,N2: nat] :
( ( ( times_times @ nat @ K @ M )
= ( times_times @ nat @ K @ N2 ) )
= ( ( K
= ( zero_zero @ nat ) )
| ( M = N2 ) ) ) ).
% nat_mult_eq_cancel_disj
thf(fact_231_is__unitE,axiom,
! [A: $tType] :
( ( algebraic_semidom @ A @ ( type @ A ) )
=> ! [A2: A,C: A] :
( ( dvd_dvd @ A @ A2 @ ( one_one @ A ) )
=> ~ ( ( A2
!= ( zero_zero @ A ) )
=> ! [B3: A] :
( ( B3
!= ( zero_zero @ A ) )
=> ( ( dvd_dvd @ A @ B3 @ ( one_one @ A ) )
=> ( ( ( divide_divide @ A @ ( one_one @ A ) @ A2 )
= B3 )
=> ( ( ( divide_divide @ A @ ( one_one @ A ) @ B3 )
= A2 )
=> ( ( ( times_times @ A @ A2 @ B3 )
= ( one_one @ A ) )
=> ( ( divide_divide @ A @ C @ A2 )
!= ( times_times @ A @ C @ B3 ) ) ) ) ) ) ) ) ) ) ).
% is_unitE
thf(fact_232_is__unit__divide__mult__cancel__left,axiom,
! [A: $tType] :
( ( algebraic_semidom @ A @ ( type @ A ) )
=> ! [A2: A,B: A] :
( ( A2
!= ( zero_zero @ A ) )
=> ( ( dvd_dvd @ A @ B @ ( one_one @ A ) )
=> ( ( divide_divide @ A @ A2 @ ( times_times @ A @ A2 @ B ) )
= ( divide_divide @ A @ ( one_one @ A ) @ B ) ) ) ) ) ).
% is_unit_divide_mult_cancel_left
thf(fact_233_normalize__div,axiom,
! [A: $tType] :
( ( normal1561407348emidom @ A @ ( type @ A ) )
=> ! [A2: A] :
( ( divide_divide @ A @ ( normal1132893779malize @ A @ A2 ) @ A2 )
= ( divide_divide @ A @ ( one_one @ A ) @ ( normal627294541factor @ A @ A2 ) ) ) ) ).
% normalize_div
thf(fact_234_normalize__unit__factor,axiom,
! [A: $tType] :
( ( normal1561407348emidom @ A @ ( type @ A ) )
=> ! [A2: A] :
( ( A2
!= ( zero_zero @ A ) )
=> ( ( normal1132893779malize @ A @ ( normal627294541factor @ A @ A2 ) )
= ( one_one @ A ) ) ) ) ).
% normalize_unit_factor
thf(fact_235_unit__factor__normalize,axiom,
! [A: $tType] :
( ( normal1561407348emidom @ A @ ( type @ A ) )
=> ! [A2: A] :
( ( A2
!= ( zero_zero @ A ) )
=> ( ( normal627294541factor @ A @ ( normal1132893779malize @ A @ A2 ) )
= ( one_one @ A ) ) ) ) ).
% unit_factor_normalize
thf(fact_236_normalize__idem,axiom,
! [A: $tType] :
( ( normal1561407348emidom @ A @ ( type @ A ) )
=> ! [A2: A] :
( ( normal1132893779malize @ A @ ( normal1132893779malize @ A @ A2 ) )
= ( normal1132893779malize @ A @ A2 ) ) ) ).
% normalize_idem
thf(fact_237_normalize__eq__0__iff,axiom,
! [A: $tType] :
( ( normal1561407348emidom @ A @ ( type @ A ) )
=> ! [A2: A] :
( ( ( normal1132893779malize @ A @ A2 )
= ( zero_zero @ A ) )
= ( A2
= ( zero_zero @ A ) ) ) ) ).
% normalize_eq_0_iff
thf(fact_238_normalize__0,axiom,
! [A: $tType] :
( ( normal1561407348emidom @ A @ ( type @ A ) )
=> ( ( normal1132893779malize @ A @ ( zero_zero @ A ) )
= ( zero_zero @ A ) ) ) ).
% normalize_0
thf(fact_239_normalize__1,axiom,
! [A: $tType] :
( ( normal1561407348emidom @ A @ ( type @ A ) )
=> ( ( normal1132893779malize @ A @ ( one_one @ A ) )
= ( one_one @ A ) ) ) ).
% normalize_1
thf(fact_240_dvd__normalize__iff,axiom,
! [A: $tType] :
( ( normal1561407348emidom @ A @ ( type @ A ) )
=> ! [A2: A,B: A] :
( ( dvd_dvd @ A @ A2 @ ( normal1132893779malize @ A @ B ) )
= ( dvd_dvd @ A @ A2 @ B ) ) ) ).
% dvd_normalize_iff
thf(fact_241_normalize__dvd__iff,axiom,
! [A: $tType] :
( ( normal1561407348emidom @ A @ ( type @ A ) )
=> ! [A2: A,B: A] :
( ( dvd_dvd @ A @ ( normal1132893779malize @ A @ A2 ) @ B )
= ( dvd_dvd @ A @ A2 @ B ) ) ) ).
% normalize_dvd_iff
thf(fact_242_normalize__mult__unit__factor,axiom,
! [A: $tType] :
( ( normal1561407348emidom @ A @ ( type @ A ) )
=> ! [A2: A] :
( ( times_times @ A @ ( normal1132893779malize @ A @ A2 ) @ ( normal627294541factor @ A @ A2 ) )
= A2 ) ) ).
% normalize_mult_unit_factor
thf(fact_243_unit__factor__mult__normalize,axiom,
! [A: $tType] :
( ( normal1561407348emidom @ A @ ( type @ A ) )
=> ! [A2: A] :
( ( times_times @ A @ ( normal627294541factor @ A @ A2 ) @ ( normal1132893779malize @ A @ A2 ) )
= A2 ) ) ).
% unit_factor_mult_normalize
thf(fact_244_div__normalize,axiom,
! [A: $tType] :
( ( normal1561407348emidom @ A @ ( type @ A ) )
=> ! [A2: A] :
( ( divide_divide @ A @ A2 @ ( normal1132893779malize @ A @ A2 ) )
= ( normal627294541factor @ A @ A2 ) ) ) ).
% div_normalize
thf(fact_245_div__unit__factor,axiom,
! [A: $tType] :
( ( normal1561407348emidom @ A @ ( type @ A ) )
=> ! [A2: A] :
( ( divide_divide @ A @ A2 @ ( normal627294541factor @ A @ A2 ) )
= ( normal1132893779malize @ A @ A2 ) ) ) ).
% div_unit_factor
thf(fact_246_associatedI,axiom,
! [A: $tType] :
( ( normal1561407348emidom @ A @ ( type @ A ) )
=> ! [A2: A,B: A] :
( ( dvd_dvd @ A @ A2 @ B )
=> ( ( dvd_dvd @ A @ B @ A2 )
=> ( ( normal1132893779malize @ A @ A2 )
= ( normal1132893779malize @ A @ B ) ) ) ) ) ).
% associatedI
thf(fact_247_associatedD1,axiom,
! [A: $tType] :
( ( normal1561407348emidom @ A @ ( type @ A ) )
=> ! [A2: A,B: A] :
( ( ( normal1132893779malize @ A @ A2 )
= ( normal1132893779malize @ A @ B ) )
=> ( dvd_dvd @ A @ A2 @ B ) ) ) ).
% associatedD1
thf(fact_248_associatedD2,axiom,
! [A: $tType] :
( ( normal1561407348emidom @ A @ ( type @ A ) )
=> ! [A2: A,B: A] :
( ( ( normal1132893779malize @ A @ A2 )
= ( normal1132893779malize @ A @ B ) )
=> ( dvd_dvd @ A @ B @ A2 ) ) ) ).
% associatedD2
thf(fact_249_associated__eqI,axiom,
! [A: $tType] :
( ( normal1561407348emidom @ A @ ( type @ A ) )
=> ! [A2: A,B: A] :
( ( dvd_dvd @ A @ A2 @ B )
=> ( ( dvd_dvd @ A @ B @ A2 )
=> ( ( ( normal1132893779malize @ A @ A2 )
= A2 )
=> ( ( ( normal1132893779malize @ A @ B )
= B )
=> ( A2 = B ) ) ) ) ) ) ).
% associated_eqI
thf(fact_250_associated__iff__dvd,axiom,
! [A: $tType] :
( ( normal1561407348emidom @ A @ ( type @ A ) )
=> ! [A2: A,B: A] :
( ( ( normal1132893779malize @ A @ A2 )
= ( normal1132893779malize @ A @ B ) )
= ( ( dvd_dvd @ A @ A2 @ B )
& ( dvd_dvd @ A @ B @ A2 ) ) ) ) ).
% associated_iff_dvd
thf(fact_251_dvd__antisym,axiom,
! [M: nat,N2: nat] :
( ( dvd_dvd @ nat @ M @ N2 )
=> ( ( dvd_dvd @ nat @ N2 @ M )
=> ( M = N2 ) ) ) ).
% dvd_antisym
thf(fact_252_normalize__mult,axiom,
! [A: $tType] :
( ( normal1561407348emidom @ A @ ( type @ A ) )
=> ! [A2: A,B: A] :
( ( normal1132893779malize @ A @ ( times_times @ A @ A2 @ B ) )
= ( times_times @ A @ ( normal1132893779malize @ A @ A2 ) @ ( normal1132893779malize @ A @ B ) ) ) ) ).
% normalize_mult
%----Type constructors (38)
thf(tcon_Int_Oint___Rings_Osemiring__no__zero__divisors__cancel,axiom,
semiri1923998003cancel @ int @ ( type @ int ) ).
thf(tcon_Int_Oint___Rings_Osemiring__no__zero__divisors,axiom,
semiri1193490041visors @ int @ ( type @ int ) ).
thf(tcon_Int_Oint___Rings_Oring__1__no__zero__divisors,axiom,
ring_11004092258visors @ int @ ( type @ int ) ).
thf(tcon_Int_Oint___Rings_Onormalization__semidom,axiom,
normal1561407348emidom @ int @ ( type @ int ) ).
thf(tcon_Int_Oint___Groups_Oab__semigroup__mult,axiom,
ab_semigroup_mult @ int @ ( type @ int ) ).
thf(tcon_Int_Oint___Rings_Oalgebraic__semidom,axiom,
algebraic_semidom @ int @ ( type @ int ) ).
thf(tcon_Int_Oint___Groups_Ocomm__monoid__mult,axiom,
comm_monoid_mult @ int @ ( type @ int ) ).
thf(tcon_Int_Oint___Rings_Ocomm__semiring__1,axiom,
comm_semiring_1 @ int @ ( type @ int ) ).
thf(tcon_Int_Oint___Groups_Osemigroup__mult,axiom,
semigroup_mult @ int @ ( type @ int ) ).
thf(tcon_Int_Oint___Rings_Osemidom__divide,axiom,
semidom_divide @ int @ ( type @ int ) ).
thf(tcon_Int_Oint___Divides_Osemiring__div,axiom,
semiring_div @ int @ ( type @ int ) ).
thf(tcon_Int_Oint___Nat_Osemiring__char__0,axiom,
semiring_char_0 @ int @ ( type @ int ) ).
thf(tcon_Int_Oint___Rings_Ozero__neq__one,axiom,
zero_neq_one @ int @ ( type @ int ) ).
thf(tcon_Int_Oint___Groups_Omonoid__mult,axiom,
monoid_mult @ int @ ( type @ int ) ).
thf(tcon_Int_Oint___Rings_Osemiring__1,axiom,
semiring_1 @ int @ ( type @ int ) ).
thf(tcon_Int_Oint___Rings_Omult__zero,axiom,
mult_zero @ int @ ( type @ int ) ).
thf(tcon_Int_Oint___Groups_Ozero,axiom,
zero @ int @ ( type @ int ) ).
thf(tcon_Int_Oint___Rings_Oidom,axiom,
idom @ int @ ( type @ int ) ).
thf(tcon_Int_Oint___Groups_Oone,axiom,
one @ int @ ( type @ int ) ).
thf(tcon_Int_Oint___Rings_Odvd,axiom,
dvd @ int @ ( type @ int ) ).
thf(tcon_Nat_Onat___Rings_Osemiring__no__zero__divisors__cancel_1,axiom,
semiri1923998003cancel @ nat @ ( type @ nat ) ).
thf(tcon_Nat_Onat___Rings_Osemiring__no__zero__divisors_2,axiom,
semiri1193490041visors @ nat @ ( type @ nat ) ).
thf(tcon_Nat_Onat___Rings_Onormalization__semidom_3,axiom,
normal1561407348emidom @ nat @ ( type @ nat ) ).
thf(tcon_Nat_Onat___Groups_Oab__semigroup__mult_4,axiom,
ab_semigroup_mult @ nat @ ( type @ nat ) ).
thf(tcon_Nat_Onat___Rings_Oalgebraic__semidom_5,axiom,
algebraic_semidom @ nat @ ( type @ nat ) ).
thf(tcon_Nat_Onat___Groups_Ocomm__monoid__mult_6,axiom,
comm_monoid_mult @ nat @ ( type @ nat ) ).
thf(tcon_Nat_Onat___Rings_Ocomm__semiring__1_7,axiom,
comm_semiring_1 @ nat @ ( type @ nat ) ).
thf(tcon_Nat_Onat___Groups_Osemigroup__mult_8,axiom,
semigroup_mult @ nat @ ( type @ nat ) ).
thf(tcon_Nat_Onat___Rings_Osemidom__divide_9,axiom,
semidom_divide @ nat @ ( type @ nat ) ).
thf(tcon_Nat_Onat___Divides_Osemiring__div_10,axiom,
semiring_div @ nat @ ( type @ nat ) ).
thf(tcon_Nat_Onat___Nat_Osemiring__char__0_11,axiom,
semiring_char_0 @ nat @ ( type @ nat ) ).
thf(tcon_Nat_Onat___Rings_Ozero__neq__one_12,axiom,
zero_neq_one @ nat @ ( type @ nat ) ).
thf(tcon_Nat_Onat___Groups_Omonoid__mult_13,axiom,
monoid_mult @ nat @ ( type @ nat ) ).
thf(tcon_Nat_Onat___Rings_Osemiring__1_14,axiom,
semiring_1 @ nat @ ( type @ nat ) ).
thf(tcon_Nat_Onat___Rings_Omult__zero_15,axiom,
mult_zero @ nat @ ( type @ nat ) ).
thf(tcon_Nat_Onat___Groups_Ozero_16,axiom,
zero @ nat @ ( type @ nat ) ).
thf(tcon_Nat_Onat___Groups_Oone_17,axiom,
one @ nat @ ( type @ nat ) ).
thf(tcon_Nat_Onat___Rings_Odvd_18,axiom,
dvd @ nat @ ( type @ nat ) ).
%----Helper facts (3)
thf(help_If_3_1_T,axiom,
! [P: $o] :
( ( P = $true )
| ( P = $false ) ) ).
thf(help_If_2_1_T,axiom,
! [A: $tType,X: A,Y: A] :
( ( if @ A @ $false @ X @ Y )
= Y ) ).
thf(help_If_1_1_T,axiom,
! [A: $tType,X: A,Y: A] :
( ( if @ A @ $true @ X @ Y )
= X ) ).
%----Conjectures (1)
thf(conj_0,conjecture,
( ( koenig1401075325scalar @ ( times_times @ nat @ n @ m ) @ xs )
= ( koenig1401075325scalar @ n @ ( koenig1401075325scalar @ m @ xs ) ) ) ).
%------------------------------------------------------------------------------