theorem
mul_two_int
(a : myint) :
int_mul (myint.int mynat.zero.mysucc.mysucc mynat.zero) a = int_add a a
theorem
half_reciprocal_mul
(a : myrat) :
rat_eq (rat_reciprocal rat_two) (rat_mul a (rat_reciprocal (rat_add a a)))
Equations
- negate_rat (myrat.rat num den) = myrat.rat (negative num) den
theorem
iszero_mul_rat
(a b : myrat) :
¬iszero_rat b → defined b → iszero_rat (rat_mul a b) → iszero_rat a
Equations
- linear_formula a b = negate_rat (rat_mul b (rat_reciprocal a))
theorem
linear_formula_works
(a b : myrat) :
rat_eq (rat_add (rat_mul a (linear_formula a b)) b) rat_zero
- rps : Π (a : myrat), myrat → myrat → rat_plus_sqrt a
Equations
Equations
- defined_rps k (rat_plus_sqrt.rps a b) = (defined a ∧ defined b ∧ defined k)
Equations
- rps_equal k (rat_plus_sqrt.rps a b) (rat_plus_sqrt.rps c d) = (rat_eq a c ∧ rat_eq b d)
Equations
- iszero_rps k (rat_plus_sqrt.rps a b) = (iszero_rat a ∧ iszero_rat b)
Equations
- add_rps k (rat_plus_sqrt.rps a b) (rat_plus_sqrt.rps c d) = rat_plus_sqrt.rps (rat_add a c) (rat_add b d)
Equations
- negate_rps k (rat_plus_sqrt.rps a b) = rat_plus_sqrt.rps (negate_rat a) (negate_rat b)
Equations
- mul_rps k (rat_plus_sqrt.rps a b) (rat_plus_sqrt.rps c d) = rat_plus_sqrt.rps (rat_add (rat_mul a c) (rat_mul b (rat_mul d k))) (rat_add (rat_mul a d) (rat_mul b c))
Equations
- add_rps_to_rat k (rat_plus_sqrt.rps a b) c = rat_plus_sqrt.rps (rat_add a c) b
Equations
- mul_rps_by_rat k (rat_plus_sqrt.rps a b) c = rat_plus_sqrt.rps (rat_mul a c) (rat_mul b c)
theorem
add_zero_rps
(k : myrat)
(a b : rat_plus_sqrt k) :
iszero_rps k a → rps_equal k (add_rps k a b) b
theorem
add_def_rps
(k : myrat)
(a b : rat_plus_sqrt k) :
defined_rps k a → defined_rps k b → defined_rps k (add_rps k a b)
theorem
add_undef_rps
(k : myrat)
(a b : rat_plus_sqrt k) :
¬defined_rps k a → ¬defined_rps k (add_rps k a b)
theorem
negate_add_inv_rps
(k : myrat)
(a : rat_plus_sqrt k) :
iszero_rps k (add_rps k a (negate_rps k a))
Equations
Equations
- discriminant a b c = rat_add (rat_mul b b) (negate_rat (rat_mul rat_four (rat_mul a c)))
Equations
- quadratic_formula a b c = mul_rps_by_rat (discriminant a b c) (add_rps_to_rat (discriminant a b c) (sqrt (discriminant a b c)) (negate_rat b)) (rat_reciprocal (rat_add a a))
Equations
- quadratic_subst k a b c x = add_rps_to_rat k (add_rps k (mul_rps_by_rat k (mul_rps k x x) a) (mul_rps_by_rat k x b)) c
theorem
add_two_halves
(a : myrat) :
rat_eq a (rat_add (rat_mul a (rat_reciprocal rat_two)) (rat_mul a (rat_reciprocal rat_two)))
theorem
quadratic_formula_works
(a b c : myrat) :
iszero_rps (discriminant a b c) (quadratic_subst (discriminant a b c) a b c (quadratic_formula a b c))