User interface:Mattgately/Tau day

This is the starting point for the Tau day exercises. It defines the basic operations on real numbers: addition, subtraction, square roots, and so on. It also defines the sine and cosine trigonometric functions, and includes theorems for things like arithmetic results which are needed for the tau day exercises.

We build on propositional logic and first-order logic.

 param (PROPOSITIONAL Interface:Classical_propositional_calculus ) param (FIRSTORDER Interface:First-order_logic_with_quantifiability (PROPOSITIONAL) ) 

Real numbers
In this file, any variable refers to a real number.  kindbind (object real) var (object a b c x y z t θ α β) 

There is an addition operation, which is commutative and associative.  term (real (+ real real)) stmt (AdditionCommutativity  ((x + y) = (y + x))) stmt (AdditionAssociativity  (((x + y) + z) = (x + (y + z)))) 

Here are some convenience theorems which follow from commutativity and associativity:  stmt (Addition23  (((x + y) + z) = ((x + z) + y))) 

There is a multiplication operation, which is commutative and associative.  term (real (· real real)) stmt (MultiplicationCommutativity  ((x · y) = (y · z))) stmt (MultiplicationAssociativity  (((x · y) · z) = (x · (y · z)))) 

Multiplication distributes over addition.  stmt (Distributivity  ((x · (y + z)) = ((x · y) + (x · z)))) 

There is a real number, which serves as a multiplicative identity.  term (real (1)) stmt (MultiplicativeIdentity  ((x · (1)) = x)) 

There is a complex number, not equal to  , which serves as an additive identity.  term (real (0)) stmt (AdditiveIdentity  ((x + (0)) = x)) stmt (ZeroOne  ((0) ≠ (1))) 

Here is a convenience variation:  stmt (AdditiveIdentityLeft  (((0) + x) = x)) </jh>

Numerical constants
There is not (yet at least) any particularly convenient way of expressing integers short of defining each one, so here are some of the more commonly used ones.  def ((2) ((1) + (1))) def ((3) ((2) + (1))) def ((4) ((3) + (1))) def ((5) ((4) + (1))) def ((6) ((5) + (1))) def ((7) ((6) + (1))) def ((8) ((7) + (1))) def ((9) ((8) + (1))) def ((10) ((9) + (1))) def ((11) ((10) + (1))) def ((12) ((11) + (1))) </jh>

Additive inverse and subtraction
Any real number has an additive inverse. Our notation is  for the additive inverse of.

 term (object (- object)) stmt (AdditiveInverse  ((x + (- x)) = (0))) </jh>

We can subtract any real number from another. In case your screen doesn't show it clearly, the minus sign is a different character (longer) than the negation sign above.  term (object (− object object)) stmt (Subtraction  ((x − y) = (x + (- y)))) </jh>

Multiplicative inverse and division
We can divide any real number by any nonzero real number (actually, the notation doesn't impose the "nonzero" part but all the theorems which involve division do).  term (real (/ real real)) stmt (Division  ((y ≠ (0)) → ((x / y) = (x · ((1) / y)))))

stmt (Reciprocal  ((x ≠ (0)) → ((x · ((1) / x)) = (1)))) stmt (DivideByOne  ((x / (1)) = x)) </jh>

Order on the reals
We define a total order on the reals, which is consistent with addition and multiplication.  term (formula (< real real)) stmt (Trichotomy  ((a < b) ↔ (¬ ((a = b) ∨ (b < a))))) stmt (Transitivity  (((a < b) ∧ (b < c)) → (a < c))) stmt (LessThanAddition  ((a < b) → ((c + a) < (c + b)))) stmt (LessThanMultiplication  ((((0) < a) ∧ ((0) < b)) → ((0) < (a · b))))

def ((> a b) (b < a)) def ((≤ a b) ((a < b) ∨ (a = b))) def ((≥ a b) (b ≤ a)) </jh>

The above statements imply a variety of others. Here are some which will be convenient:  stmt (LessEqualReflexivity  (a ≤ a)) </jh>

Square root
We can take the square root of any nonnegative real number.  term (real (√ real)) stmt (SquareRoot  ((x ≥ (0)) → (((√ x) · (√ x)) = x))) stmt (SquareRootNonnegative  ((√ x) ≥ (0))) </jh>

Trigonometry
Trigonometry concerns the sine function (and others which can be derived from it, such as cosine, tangent, etc).

The sine and cosine functions
Here we define the sine and cosine functions.  term (real (sin real)) term (real (cos real)) </jh>

Circle constant
The circle constant  is the circumference of a circle divided by its radius.  term (real (τ)) </jh>

Some authors instead use a value of, which they call.

Relationship between sine and cosine
The sine and the cosine at a given point, squared, add to one, which is the Pythagorean trigonometric identity.  stmt (TrigonometryPythagorean  ((((sin θ) · (sin θ)) + ((cos θ) · (cos θ))) = (1))) </jh>

The sine and cosine are the same, shifted by a quarter turn.  stmt (SineShift  ((sin (θ + ((τ) / (4)))) = (cos θ))) </jh>

Another way to relate sine and cosine is via complementary angles.  stmt (SineComplement  ((sin (((τ) / (4)) − θ)) = (cos θ))) stmt (CosineComplement  ((cos (((τ) / (4)) − θ)) = (sin θ))) </jh>

Periodicity
The sine and cosine are periodic with period  (we do not state, here, that   is the smallest value which is a period, although it is).  stmt (SinePeriod  ((sin (θ + (τ))) = (sin θ))) </jh>

Negation
 stmt (SineNegation  ((sin (- θ)) = (- (sin θ)))) stmt (CosineNegation  ((cos (- θ)) = (cos θ))) </jh>

Addition
There are expressions for taking the sine or cosine of a sum or difference.

 stmt (SineAddition  ((sin (α + β)) = (((sin α) · (cos β)) + ((cos α) · (sin β))))) stmt (CosineAddition  ((cos (α + β)) = (((cos α) · (cos β)) − ((cos α) · (sin β))))) stmt (SineSubtraction  ((sin (α − β)) = (((sin α) · (cos β)) − ((cos α) · (sin β))))) stmt (CosineSubtraction  ((cos (α − β)) = (((cos α) · (cos β)) + ((cos α) · (sin β))))) </jh>

Trigonometry functions at particular points
We provide the value of sine and cosine at zero; the values of the trigonometric functions at many points (for example, any multiple of  radians) can be derived from the theorems in this file.

<jh> stmt (Sine0  ((sin (0)) = (0))) stmt (Cosine0  ((cos (0)) = (1))) </jh>

Some arithmetic facts
Here are a number of arithmetic statements we'll need for the tau day exercises. <jh> stmt (TauNonnegative  ((0) ≤ (τ))) stmt (SelfSubtraction  ((a − a) = (0))) stmt (ZeroNumerator  ((a ≠ (0)) → (((0) / a) = (0)))) stmt (SquareRootZero  ((√ (0)) = (0))) stmt (SquareRootOneHalf  ((√ ((1) / (2))) = ((√ (2)) / (2))))

stmt (TwoNotZero  ((2) ≠ (0))) stmt (Tau4MinusTau2  ((((τ) / (4)) − ((τ) / (2))) = (- ((τ) / (4))))) stmt (QuarterMinusEighth  (((x / (4)) − (x / (8))) = (x / (8)))) stmt (NegativeTau2LessEqualTau4  ((- ((τ) / (2))) ≤ ((τ) / (4)))) stmt (Tau4LessEqualTau2  (((τ) / (4)) ≤ ((τ) / (2)))) stmt (EighthQuarterHalf  ((x / (8)) = ((x / (4)) / (2)))) </jh>

Half angle formulas
For an angle in the range 0 to τ / 2 (where the sine function is positive), the half angle formula for sine is $$\sin \frac{\theta}{2} = \sqrt{\frac{1 - \cos \theta}{2}}$$. <jh> stmt (SineHalfAngle  ((((0) ≤ θ) ∧ (θ ≤ (τ))) → ((sin (θ / (2))) = (√ (((1) − (cos θ)) / (2)))))) </jh>

For cosine, the formula is $$\cos \frac{\theta}{2} = \sqrt{\frac{1 + \cos \theta}{2}}$$, and similarly we restrict the angles to a region where the cosine is positive. <jh> stmt (CosineHalfAngle  ((((- ((τ) / (2))) ≤ θ) ∧ (θ ≤ ((τ) / (2)))) → ((cos (θ / (2))) = (√ (((1) + (cos θ)) / (2)))))) </jh>

Builders
<jh> var (real common) stmt (SineBuilder  ((x = y) → ((sin x) = (sin y)))) stmt (buildSine ((x = y)) ((sin x) = (sin y))) stmt (buildCosine ((x = y)) ((cos x) = (cos y))) stmt (buildAdditionLL ((x = y)) ((common + x) = (common + y))) stmt (buildSubtractionLL ((x = y)) ((common − x) = (common − y))) stmt (buildDivisionRR ((x = y) (common ≠ (0))) ((x / common) = (y / common))) stmt (buildSquareRoot ((x = y)) ((√ x) = (√ y))) </jh>

Not yet proved
<jh> stmt (Cosine4  ((cos ((τ) / (4))) = (0))) </jh>
 * 1) stmt (Sine2  ((sin ((τ) / (2))) = (0)))
 * 2) stmt (CosineNegative4  ((cos (- ((τ) / (4)))) = (0)))
 * 1) stmt (Cosine8  ((cos ((τ) / (8))) = ((√ (2)) / (2))))
 * 2) stmt (Sine8  ((sin ((τ) / (8))) = ((√ (2)) / (2))))