(1) Monoids And Abelian Monoids
Binary Operator ⋆ is associative and has an identity ≡ it is a monoid. If it is also symmetric, it is an abelian monoid.
In the following the ⋆ represents an operator that is an abelian monoid. All theorems don't strictly need the "abelian-ness", but the operators we deal with are all abelian, so the assumption does no harm.
(2) General Form of Quantification
( ⋆ x:type1, y:type2 ..) | Range:B : Predicate:type3)
x,y,... are bound variables or 'dummmies'
the Predicate is also known as the "body".
(3) Definition of 'free'
(a) The *occurrence* of i, in an expression i is free
(b) If an occurrence of a variable i in expression E is free, then so is the occurrence in (E), function application arguments f(....E...) [note: binary operators are considered function applications)[, (⋆x|E:P) and (⋆x|R:E) (as long as i is not one of the variables in the dummy list x.)
(4) Definition of 'bound'
(a) If an occurrence of a variable i in expression E is free, then that occurrence is bound to dummy i in (⋆x|E:P) and ( ⋆x|R:E) if i occurs in dummy list x.
(b) If an occurrence of i is bound in expression E, then it is also bound to the same dummy in (E), function application arguments f(....E...) [note: binary operators are considered function applications)], (⋆x|E:P) and (⋆x|R:E)
(5) Definition of occurs-free and not-occurs-free
occurs-free(v,e) is defined to mean that at least one variable from the list-of-variables v occurs free in at least one expression in list of expressions v
not-occurs-free(v,e) ≡ ¬occurs-free(v,e) ≡ no variable in list-of-variables v occurs free in any of the expressions in list-of-expressions e
(6) Textual Substitution
Extending textual substitution to quantified statements
( ⋆ x | R : P)[y := F] ≡ (⋆ x | R[y := F] : P[y := F]),
given not-occurs-free(x,[y,F])), iow none of the bound variables is free on either side of the := . If a bound variable does occur free on either side of :=, replace *the bound variable* with a fresh variable j. This ensures that a free variable in the textual substitution y := F does not become bound.
Extending Leibniz inference rule to handle substitution of either side of an equality into a quantified statement
(7) Leibniz 1
A=B(⋆x|R[z:=A]:P)=(⋆x|R[z:=B]:P)
(8) Leibniz 2
R⇒A=B(⋆x|R:P[z:=A])=(⋆x|R:P[z:=B])
(9) Axiom: Empty Range: ( ⋆ x | false : P ) ≡ u (the identity of ⋆)
(10) Axiom: One Point Range: ( ⋆ x | x = E : P ) ≡ P[ x := E ]
provided not-occurs-free (x,E)
(11) Axiom: Distributivity: ( ⋆ x | R : P ) ⋆ ( ⋆ x | R : Q ) ≡ ( ⋆ x | R : P ⋆ Q )
provided each quantification is defined (quantifications with finite ranges are always defined as are quantifications with ⋆ being either ∧ or ∨. if ⋆ is +, then you have to check for convergence of the summation, etc)
(12) Axiom: Range Split 1: ( ⋆ x | R ∨ S: P ) ≡ ( ⋆ x | R : P ) ⋆ ( ⋆ x | S : P )
provided (R ∧ S) is false ∧ each quantification is defined
(13) Axiom: Range Split 2: ( ⋆ x | R ∨ S: P ) ⋆ ( ⋆ x | R ∧ S: P ) ≡ ( ⋆ x | R : P ) ⋆ ( ⋆ x | S : P )
provided each quantification is defined
(14) Axiom: Range Split 3: ( ⋆ x | R ∨ S: P ) ≡ ( ⋆ x | R : P ) ⋆ ( ⋆ x | S : P )
provided ⋆ is idempotent ∧ each quantification is defined
Note: Definition of idempotent: ⋆ is idempotent ≡ ( a ⋆ a ≡ a)
(15) Axiom: Interchange of Dummies: ( ⋆ x | R :( ⋆ y | S : P) ) ≡ ( ⋆ y | S :( ⋆ x| R : P) )
provided not-occurs-free(x,S) ∧ not-occurs-free(y,R) ∧ each quantification is defined
iow "nested quantifications with the same operator can be interchanged"
(16) Axiom: Dummy Nesting: (⋆ x,y | R ∧ S : P) ≡ ( ⋆ x | R :( ⋆ y | S : P) )
provided not-occurs-free(y,R)
iow " a single quantification over a list of dummies can be viewed as nested quantification"
(17) Axiom: Dummy Renaming: (⋆x | R : P) ≡ (⋆y | R[x := y] : P[x := y])
provided not-occurs-free (y, [R,P])
iow "one dummy can be replaced consistently by another dummy"
(18) Theorem: Change of Dummy (Generalization of Dummy Renaming) (⋆x | R : P) ≡ (⋆x | R [x := f.y] : P[x := f.y])
provided not-occurs-free (y,[R,P]) ∧ f is an invertible function such that x = f.y and y = f−1.x
Example: Consider (+ i | 2 ≤ i ≤ 10 : i2 ) and we need to have a range starting with zero
the reqd range is (2 - 0) ≤ i−2 ≤ (10 - 2)
let k = (i - 2) this is new dummy expressed in terms of old = f−1.i = k = i - 2
so i = k + 2 this is old dummy expressed in terms of new = f.k = i = k + 2
(+ i | 2 ≤ i ≤ 10 : i2 )
= Dummy Renaming Theorem. Rename the dummy from i to k with i = f.k = k - 2
(+ k | 2 ≤ k+2 ≤ 10 : (k+2)2 )
= arithmetic a ≤ b ≤ c ≡ a-2 ≤ b-2 ≤ c-2
(+ k | 0 ≤ k ≤ 8 : (k+2)2 )
(19) Theorem: Split off term 1
(⋆i | 0≤i<n+1 : P) ≡ (⋆i | 0≤i<n : P) ⋆ P[i := n ]
(20) Theorem: Split off term 2
(⋆i | 0≤i<n+1 : P) ≡ P[i := 0 ] ⋆ (⋆i | 0<i<n+1 : P)
No comments:
Post a Comment