Loop Invariant Solution
Loop Invariant Solution
CS-211
Homework (Solution)
Topic(s) Proving Loop Invariant via Mathematical Induction
Use mathematical induction to establish truth of loop invariant in each of the following cases. Also, use termination
condition of while loop along with the loop invariant to prove that each of the following functions computes the intended
output.
A.
FUNCTION COMP(X,Y;Z)
1. Z ← X
2. W ← Y
3. WHILE (W > 0)
a) Z ← Z + Y
b) W ← W – 1
4. RETURN (Z)
END OF FUNCTION COMP
Computes: Z = X + Y2
Loop Invariant: (Y * Wn) + Zn = X + Y2
Page 1 of 4
FE (CS) Batch 2022 HW
CS-211
B.
FUNCTION DIFF(X,Y;Z)
1. Z ← X
2. W ← Y
3. WHILE (W > 0) {
a) Z ← Z – 1
b) W ← W – 1
}
4. RETURN (Z)
END OF FUNCTION DIFF
Computes: Z = X – Y
Loop Invariant: Zn = X – Y + Wn
Proving base case
P(0): Z0 = X – Y + W0
⇒ X=X–Y+Y
⇒ X=X
Hence, base case P(0) holds.
Inductive Hypothesis P(k)
Zk = X – Y + Wk --------------- (I.H.)
Let’s check P(k + 1)
Zk + 1 = X – Y + Wk + 1
= Zk – 1 = X – Y + Wk – 1 (From body of loop)
= Zk = X – Y + Wk
Thus, P(k) → P(k + 1). This shows that the expression Zn = X – Y + Wn is loop invariant for the given loop.
Loop Termination
Loop terminates when W = 0, in which case the loop invariant yields: Z = X – Y + 0 ⇒ Z = X – Y
C.
FUNCTION EXP2(N,M;R)
1. R ← 1
2. K ← 2M
3. WHILE (K > 0)
a) R ← R x N
b) K ← K – 1
4. RETURN (R)
END OF FUNCTION EXP2
Computes: R = 𝑁 2𝑀
Loop Invariant: Rn x 𝑁𝑘𝑛 = 𝑁 2𝑀
Page 2 of 4
FE (CS) Batch 2022 HW
CS-211
Loop Invariant: Rn x 𝑁𝑘𝑛 = 𝑁 2𝑀
Proving base case
P(0): R0 x 𝑁𝑘0 = 𝑁 2𝑀
⇒ 1 x 𝑁 2𝑀 = 𝑁 2𝑀
⇒ 𝑁 2𝑀 = 𝑁 2𝑀
Hence, base case P(0) holds.
Inductive Hypothesis P(L)
RL x 𝑁𝑘𝐿 = 𝑁 2𝑀 --------------- (I.H.)
Let’s check P(L + 1)
RL + 1 x 𝑁𝑘𝐿+1
= RL * N x 𝑁𝑘𝐿 −1 (From body of loop)
= RL x 𝑁𝑘𝐿
Thus, P(L) → P(L + 1). This shows that the expression Rn x 𝑁𝑘𝑛 = 𝑁 2𝑀 is loop invariant for the given loop.
Loop Termination
Loop terminates when k = 0, in which case the loop invariant yields: Rn = 𝑁 2𝑀
D.
FUNCTION SQS(X,Y;Z)
1. Z ← Y
2. W ← X
3. WHILE (W > 0)
a) Z ← Z + X
b) W ← W – 1
4. W ← Y – 1
5. WHILE (W > 0)
a) Z ← Z + Y
b) W ← W – 1
6. RETURN (Z)
END OF FUNCTION SQS
Computes: Z = X2 + Y2
Loop Invariant (First Loop):
Zn + (X * Wn) = Y + X2
Page 3 of 4
FE (CS) Batch 2022 HW
CS-211
1st Loop Invariant: Zn + (X * Wn) = Y + X2
Proving base case
P(0): Z0 + (X * W0) = Y + X2
⇒ Y + (X * X) = Y + X2
⇒ Y + X2 = Y + X2
Hence, base case P(0) holds.
Inductive Hypothesis P(k)
Zk + (X * Wk) = Y + X2 --------------- (I.H.)
Let’s check P(k + 1)
Zk + 1 + (X * Wk + 1)
= Zk + X + (X * (Wk – 1)) (From body of loop)
= Zk + (X * Wk)
Thus, P(k) → P(k + 1). This shows that the expression Zn + (X * Wn) = Y + X2 is loop invariant for the 1st loop.
Loop Termination
Loop terminates when W = 0, in which case the loop invariant yields: Z + (X * 0) = Y + X2 ⇒ Z = Y + X2
Page 4 of 4